probleme foreach php

probleme foreach php - PHP - Programmation

Marsh Posté le 10-07-2017 à 13:08:11    

bonjour, ca fait quelques semaines que je suis bloquée , et je commence q desesperer , j ai vraiment besoin d aide.
 
mon code ressemble a ca :

Code :
  1. global $wpdb;
  2.     //Je construis la requete à part
  3.     $requete = "SELECT meta_value,meta_key FROM `usermeta` ";
  4.     $requete .= "where user_id='".get_current_user_id()."' ";
  5.     $donnees = $wpdb->get_results($requete);
  6. $domaine=array();
  7. $metiers_domaine=array();
  8. $description=array();
  9. $dom=array();
  10. $m_d=array();
  11. $desc=array(); ?>
  12.   <?php 
  13. foreach ($donnees as $user) {
  14.         if ($user->meta_key == "job_listing_category" ) {
  15.             $domaine[] = $user->meta_value;
  16.          $dom[] = $user->umeta_id;
  17.         }
  18.         if ($user->meta_key == "description" ) {
  19.             $description[]= $user->meta_value;
  20.          $desc[]= $user->umeta_id;   
  21.         }   
  22.         if ($user->meta_key == "metier_domaine" ) {
  23.             $m_d[] = unserialize($user->meta_value);
  24.           //$metiers_domaine1[] = $user->umeta_id;
  25.           //$arraye = array($metiers_domaine, $metiers_domaine1);
  26.           }
  27.       }
  28. ?>
  29. <form method="POST" action="p.php">
  30. <table class="pure-table pure-table-bordered">
  31.         <tr><th>Domaine</th>
  32.     <?php  foreach($domaine as $dom ){
  33.         echo "<td>".ucfirst($dom)."<br></td> ";} ?>
  34.     </tr>
  35.        <tr><th>Metier Domaine</th>
  36.     <?php foreach($m_d as $key){
  37.         echo "<td>";
  38.         foreach($key as $o){
  39.             echo "<br>";
  40.             echo ucfirst($o);}echo "</td>";}?>
  41.          </tr>
  42.     <tr><th>Dossier Technique</th>
  43.     <?php
  44.         foreach($description as $desc){
  45.             echo "<td>".ucfirst($desc)."<br></td>"; }?></tr>
  46.     <tr><th>Action</th>
  47.         <?php $somme=count($domaine);
  48.                       for ($i = 0; $i < $somme; $i++){?>
  49.         <td>
  50.             <a href="p?dom=<?php echo $dom ?>&o=<?php echo $o ?>&desc=<?php echo $desc ?>" title="Editer">
  51.             <img src="edit-e1498588233966.png"></a>
  52.             <a href="e?dom=<?php echo $dom ?>&m_d=<?php echo $m_d ?>&desc=<?php echo $desc ?>" title="Remove"><img src="remove-e1499223.png" ></a>
  53.         </td>
  54.         <?php } $i++;?>
  55.     </tr>
  56.     </table>
  57. </form>


 
le href editer , mon renvoi les valeurs du derniers enregistrements de la table , alors que je veux qu il me donne les valeurs de la ou il pointe .
je sais que ca provient du for des href , mais je ne sais pas ce qu'il faut que je fasse pour récupérer les valeurs voulu .


Message édité par rakima le 10-07-2017 à 13:12:52
Reply

Marsh Posté le 10-07-2017 à 13:08:11   

Reply

Marsh Posté le 10-07-2017 à 13:51:33    

T'es pas dans les mêmes boucles. Ca risque pas de marcher, si je comprends bien ton code.
 
La première boucle va afficher sur une ligne, tous les domaines. par contre, je comprends pas pourquoi tu mets un <br /> dans ton <td>, c'est un non-sens :/
 
La 2ème boule va afficher sur une seconde ligne le "métier domaine" avec une autre boucle à l'intérieur  :/
 
La 3ème boucle affiche sur une ligne des dossiers techniques (avec encore un <br /> dans le <td>  :pfff:  
 
Enfin, une 4ème boucle (de type for et non foreach) qui affiche à nouveau la description et un truc en rapport avec le métier domaine.
 
Bref, aucun chance que tout ça fonctionne puisque tes boucles s'exécute les unes à la suite des autres et non en parallèle, comme il semble que tu le voudrais. En plus, tu fais appelles à des variables qui viennent de boucles précédentes et (donc) déjà terminées d'être exécutées. Il est normal que $o ou $desc t'indique la dernière valeur puisqu'ils sont arrivés à la fin de leur boucle.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-07-2017 à 15:19:37    

Merci pour la reponse , j'ai enlevé les <br> (erreur bete) mais qui changes rien ,le probleme c'est que meta_key prend 3 valeurs "job_listing_category" ou "metier_domaine" ou "description"
et :
job_listing_category c'est les domaines
metier_domaine c'est les métiers domaine
description c'est dossier technique
mais l'architecture de ma table usermeta est tres limitée (je peux pas la changer , bd wordpress)
du coup dans la colomn meta_key y'a job_listing_category ,metier_domaine et description donc forcement faut que je teste avant d'afficher , mais comme vous dites je sais que mes foreach ressemble a un bazard , mais je sais plus par ou commencer
 

Reply

Marsh Posté le 10-07-2017 à 22:42:58    

J'ai l'impression que la valeur commune entre tes 3 types de données, c'est $user->umeta_id.
Du coup, je te propose la structure suivante :
$ArrayData = array(
                              id1 => array(
                                                   'domaine' => $domaine_value,
                                                   'metier' => $metier_value,
                                                   'desc' => $desc_value
                                                 ),
                              id2 => array(
                                                  ...
                                                 ),
                             );
id 1, id2... représentent les valeurs prises par $user->umeta_id.
 
Mais le mieux, ça serait de nous poster un exemple de contenu de ta table de données et le rendu de ces données dans le tableau que tu cherches à afficher. Ainsi, ce sera plus simple de te proposer la structure de données à utiliser pour faire les boucles que tu veux.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed