Bonjour tout le monde ,
chaque utilisateur peut avoir un ou PLUSIEURS DOSSIERS TECHNIQUES que je stocke dans la table usermeta
un dossier technique contient :
-domaine
-metier
-description
le probleme que j'ai c'est que je n'arrive pas à créer une boucle qui me lie les 3 données et qui m'affiche un tableau des dossiers technique et pouvoir récuperer les id de chaque dossiers technique qui contient 3 enregistrements.
On m'a déjà proposé d'utiliser ACF etc. mais ce n'est pas ca mon probleme , j'ai tout crée à la main
mon probleme c'est la manière dont je peux les parcourir depuis la base de donnée

15 réponses


Guique
Réponse acceptée

Hum... Pourquoi ne pas utiliser la fonction que WordPress met à ta disposition ?

$domaines = get_user_meta( get_current_user_id(), 'job_listing_category', false );
$descriptions = get_user_meta( get_current_user_id(), 'description', false ); 
$metiers = get_user_meta( get_current_user_id(), 'metier', false ); 

Le false à la fin te permet de dire que tu attends un tableau avec potentiellement plusieurs résultats dedans.

rakima
Auteur
Réponse acceptée

j'ai changé la for des actions
avant :

<tr><th>Action</th>
        <?php $i=0;
                $somme=count($domaines);
                      for ($i == 0; $i < $somme; $i++){?>
        <td>
            <a href="p?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Editer">
            <img src="edit-e1498588233966.png"></a>
            <a href="delete-dossier-tech?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
        </td>
        <?php } $i++;?>

    </tr>

après :

<tr><th>Action</th>
        <?php
                $somme=count($domaines);
                      for ($i = 0; $i < $somme; $i++){?>
        <td>
            <a href="https://page-temp?domaines=<?php echo $domaines[$i] ?>&metiers=<?php echo $metiers[$i] ?>&descriptions=<?php echo $descriptions[$i] ?>" title="Editer">
            <img src="edit-e1498588233966.png"></a>
            <a href="https://delete-dossier-tech?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
        </td>
        <?php } ?>

    </tr>

et effectivement, j'ai réussi à récuperer les 3 valeurs, j'ai aussi crée la page page-temp pour pouvoir les modifier

rakima
Auteur

sachant que
domaine => job_listing_category=>que je mets dans meta_key
sa valeur dans meta_value
same pour les autres champs

Hello,

Même problème que sur ton autre post mais je vais t'épargner le troll ce coup-ci : il nous faut un minimum de code et d'explication pour pouvoir t'aider.

Tu pourrais par exemple nous poster le code dans lequel tu déclares tes meta ainsi que le code de ta boucle qui ne fonctionne pas, tout ça en explicant la logique que tu as suivi.

Si tu modifies un élément du moteur d'une voiture et que la voiture ne fonctionne plus : personne ne pourra t'aider si tu te contente de dire "J'ai customisé mon moteur, ma voiture n'avance plus, help !"
Les gens auront besoin de savoir le modèle de la voiture, la ou les pièces que tu as changé et surtout, le processus que tu as suivi pour modifier ces pièces. "J'ai modifié le carburateur" ne sera pas non plus suffisant.

rakima
Auteur

voila mon code pour afficher mes dossiers techniques :

<?php

    global $wpdb;

    //Je construis la requete à part
    $requete = "SELECT meta_value,meta_key FROM `usermeta` ";
    $requete .= "where user_id='".get_current_user_id()."' ";

    $donnees = $wpdb->get_results($requete);
$domaine=array();
    $metiers_domaine=array();
    $description=array();
    $dom=array();
    $m_d=array();
    $desc=array();      
foreach ($donnees as $user) {
        if ($user->meta_key == "job_listing_category") { 

          $domaine[] = $user->meta_value;
         $dom[] = $user->umeta_id;
           }
        if ($user->meta_key == "description") { 
            $description[]= $user->meta_value; 
         $desc[]= $user->umeta_id;    
        }     
        if ($user->meta_key == "metier") {
            $m_d[] = $user->meta_value;
          }
      /* if (($user->meta_key == "job_listing_category") or ($user->meta_key == "description") or ($user->meta_key == "metier_domaine")){

      $umeta_id[]= $user->umeta_id;   
      }
      */        
?>
  <form method="POST" action="page-temp.php">

 <table class="pure-table pure-table-bordered">

        <tr><th>Domaine</th>
    <?php  foreach($domaine as $dom ){
        echo "<td>".ucfirst($dom)."</td> ";} ?>
    </tr>
       <tr><th>Metier Domaine</th>
    <?php foreach($m_d as $key){
       echo "<td>".ucfirst($key)."</td> ";} ?>

         </tr>
    <tr><th>Dossier Technique</th>
    <?php
        foreach($description as $desc){
            echo "<td>".ucfirst($desc)."</td>"; }?></tr>
    <tr><th>Action</th>
        <?php $i=0;
                $somme=count($domaine);
                      for ($i = 0; $i < $somme; $i++){?>
        <td>
            <a href="https://page.pro/page-temp?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Editer">
            <img src="edit-e1498588233966.png"></a>
            <a href="https://page.pro/delete?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
        </td>
        <?php } $i++;?>

    </tr>
    </table>
</form>  
rakima
Auteur

Merci pour le coup de main,
le get_user_meta me permet d'afficher chaque valeur séparemment , alors que dans mon cas ce que j'essaye de faire c'est de grouper les 3 valeurs en une pour constituer ce que j'appelle un dossier technique
j'essaye d uploader une image pour vous montrer un apércu mais j'y arrive pas, du coup je fais ca :

Domaine Informatique Informatique Telecoms
Metier Domaine Développeur web Analyste2 deploiement
Dossier Technique Un premier test1 Un premier test2 Un premier test3
Action edit/remove edit/remove edit/remove

voila le resultat d'affichage, et ce que j'essaye de faire c'est de cliquer sur editer ou remove et recuperer les valeurs à modifier, mais ce qui se passe c'est que je recois les valeurs des derniers enregistrements mais pas celles spécifiés

Peux-tu poster la partie de ton code où tu déclares tes meta ?

rakima
Auteur

pour le moment,c'est le seul code que j'ai fait

Elles sortent d'où ces meta si tu les as pas instancié ?
Et du coup tu récupères quoi en faisant des var_dump des variables que je t'ai donné ?
Pourrais-tu coller les 3 résultats des var_dump s'il te plait ?
J'ai du mal à comprendre ton problème

rakima
Auteur

j'ai enlevé la requete sql et la condition du meta_key ,pour utiliser directement le get_meta_user , les resultats je les affiche comme précidement dans un tableau :

<?php
$domaines = get_user_meta( get_current_user_id(), 'job_listing_category', false );
$descriptions = get_user_meta( get_current_user_id(), 'description', false ); 
$metiers = get_user_meta( get_current_user_id(), 'metier', false ); 
//var_dump($metiers);       
?>        
 <form method="POST" action="page-temp.php">    
 <table class="pure-table pure-table-bordered">

        <tr><th>Domaine</th>
    <?php  foreach($domaines as $dom ){
        echo "<td>".ucfirst($dom)."</td> ";} ?>
    </tr>
       <tr><th>Metier Domaine</th>
    <?php foreach($metiers as $key){
       echo "<td>".ucfirst($key)."</td> ";} ?>
         </tr>
    <tr><th>Dossier Technique</th>
    <?php
        foreach($descriptions as $desc){
            echo "<td>".ucfirst($desc)."</td>"; }?></tr>
    <tr><th>Action</th>
        <?php $i=0;
                $somme=count($domaines);
                      for ($i == 0; $i < $somme; $i++){?>
        <td>
            <a href="p?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Editer">
            <img src="edit-e1498588233966.png"></a>
            <a href="delete-dossier-tech?dom=<?php echo $dom ?>&key=<?php echo $key ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
        </td>
        <?php } $i++;?>

    </tr>
    </table>
</form> 

et les var_dump :
var_dump($metiers)= array(2) { [0]=> string(8) "analyste" [1]=> string(13) "Déploiement " }
var_dump($domaines)=array(2) { [0]=> string(12) "informatique" [1]=> string(8) "telecoms" }
var_dump($descriptions)=array(2) { [0]=> string(21) "analyste des données" [1]=> string(17) "test dossier tech" }

Ok. Et pour ce qui est de la création de tes méta ?
J'ai du mal à comprendre ton problème mais je sens que tu as mal retranscrit ta logique à un moment donné, plutôt dans ton code.

rakima
Auteur

j'ai rien fait d'autre que ca.

je sais que mon probleme provient de la boucle for vu que je lui passe la somme des domaines , alors que je dois les passer les id des 3 valeurs que je veux modifier, mais je sais pas comment récuperer les 3 valeurs d'une seule column au meme temps
sachant que ma table usermeta ressemble a ca :

CREATE TABLE `usermeta` (
  `umeta_id` bigint(20) UNSIGNED NOT NULL,
  `user_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_520_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

et les 3 valeurs sont dans meta_key et j affiche meta_value

Tu as saisi tes données exemple à la main ????
C'est quoi cette table ? Une table custom ou c'est la table wp_usermeta ?

Décidément, je n'aurai pas réussi à comprendre ton problème.
Je suis content que tu aies trouvé la solution.
N'hésite pas à placer en "résolu" ton sujet, avec la réponse à la question. Pareil pour tes autres sujets d'ailleurs ;)

C'est tres bien les codes! Je trouve quelque chose mtn!!! Merci et bonne continuation! Un grand bisous de Vietnam