problème avec une boucle foreach

problème avec une boucle foreach - PHP - Programmation

Marsh Posté le 27-08-2013 à 15:40:57    

Bonjour à tous
Je termine un stage vendredi et avec un collègue, on vient de s'apercevoir d'un bug. Le seul sur tout le site réalisé (pour le moment  :sarcastic: )
Je perds des poissons.  :fou:  
 
Le but de se code, est d'afficher tous les poissons qui ont été pêché au moins une fois sur une station.
 par exemple   je souhaiterais que ca affiche:
p1   p2  p3  p4  p5  p6  p7  p8  p9  p10
1     3     -     5   7    9    3    2   -      -
-      5    6     -    8     -    4    1   2    2
 
mais le résultat est
p2  p3  p5  p7  p8  p9  p10
3    -    5    3    2    -     -    
5   6     8    4    1   2    2
en gros, je perds des poissons
Le problème vient du deuxième foreach mais je vois pas du tout comment le résoudre.
 
 
 

Code :
  1. $masse_poisson = $bdd -> query('SELECT O.date_operation, ABH ,ABL ,ALA ,ALF ,ANG ,APP ,ASP ,ATH ,BAF ,BBG ,BOU ,BRB
  2.                                                                     BRE ,BRO ,CAA ,CAG ,CAK ,CAR ,CAS ,CCO ,CCU ,CHA ,CHE ,CMI
  3.                                                                     CTI ,CYP ,EPI ,EPT ,FLE ,GAM ,GAR ,GOU ,GRE ,HOT ,HYC ,IDE
  4.                                                                     LOF ,LOR ,LOT ,LPM ,LPP ,LPR ,LPX ,MGL ,MUC ,MUP ,OBR ,OCL
  5.                                                                     PCC ,PCH ,PER ,PES ,PFL ,PIM ,PLI ,PSR ,ROT ,SAN ,SAT ,SDF
  6.                                                                     SIL ,SPI ,TAC ,TAN ,TOX ,TRF ,TRM ,VAI ,VAN ,VAR
  7.                                             FROM PECHER_MASSE M
  8.                                             NATURAL JOIN OPERATION O
  9.                                             WHERE code_wama_station = "'.$_SESSION['code_wama_session'].'" order by date_operation ');
  10.                 $array = array();
  11.                 $array_b = array();
  12.                 while( $donnee_m = $masse_poisson -> fetch()){
  13.                      foreach ($donnee_m as $key => $value) {
  14.                          if (!is_numeric($key)) {
  15.                              $array[$key] = $value;
  16.                              $array_b[date('Y', strtotime($donnee_m['date_operation']))][$key] = $value;
  17.                          }
  18.                      }
  19.                  }
  20.                     $head = "";
  21.                      $body = "";
  22.                      foreach ($array as $key => $value) {
  23.                          if ($value != 0)
  24.                              $head .= "<th>$key</th>";
  25.                      }                 
  26.                     $line = "";
  27.                          foreach ($array_b as $key => $value) {
  28.                              $line .= "<tr>";
  29.                              foreach ($value as $key2 =>$value2) {
  30.                                  if($array[$key2] != 0){
  31.                                      $dec = round($value2,2);
  32.                                      if($dec == 0)
  33.                                          $line.= "<td>-</td>";
  34.                                      else
  35.                                      $line .= "<td>$dec</td>";
  36.                                  }
  37.                              }
  38.                              $line .= "</tr>";
  39.                          }
  40.                      echo "</table>";
  41.                 $table = "<table border=\"1\" id=\"tableau_peche\"><thead><tr>$head</tr></thead><tbody>$line</tbody></table>";
  42.                 echo $table;
  43.                 echo "<p id=\"non\">-9 : Non déterminée</p>";
  44.                 $masse_poisson->closeCursor();


 
Merci pour vos réponses et votre aide

Reply

Marsh Posté le 27-08-2013 à 15:40:57   

Reply

Marsh Posté le 27-08-2013 à 16:00:27    

Essaye avec ça....
 

Code :
  1. while ($donnee_m = $masse_poisson->fetch()) {
  2.     foreach ($donnee_m as $key => $value) {
  3.         if (!is_numeric($key)) {
  4.             if (!isset($array[$key]) or $array[$key] == '')
  5.                 $array[$key] = 0;
  6.             $array[$key] += $value;
  7.             $array_b[date('Y', strtotime($donnee_m['date_operation']))][$key] = $value;
  8.         }
  9.     }
  10. }

Reply

Marsh Posté le 27-08-2013 à 16:42:57    

Merci, c'était ce qu'il fallait.

Reply

Sujets relatifs:

Leave a Replay

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