Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1427 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  php problème tableau suite requête MySQL [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

php problème tableau suite requête MySQL [résolu]

n°2200345
pulpipi45
Posté le 20-08-2013 à 10:18:55  profilanswer
 

Bonjour à tous,
Je vous explique mon problème.
Je suis actuellement en stage dans une société qui ne compte aucun informaticien et là, ça fait 3 jours que je galère sur un tableau.
Pour exposer le sujet, je fais une requête MySQL avec la fonction query->. Jusque là, aucun soucis.
Ensuite je fais mon while avec mon fetch, et c'est là que ça se complique (pour moi).
 
Je travaille sur une base de données de poisson et de site de pêche.
Je dois récupérer tous les poissons qui ont été pêchés sur la station. (jusque là aucun problème non plus)
C'est maintenant que j'ai beaucoup de mal.
 
exemple d'affichage: p1 p2 p3 p4 p5 p6 p7 p8 p9    que je souhaiterais (en supprimant p7 aussi)
            année X1   1    0 10  6   3   0   0   7  6
            année X2   0    3  5   0   2   4   0   6  1
 
Or, on a essayé 2 solution.
Au départ la base de données ne comprenait que les poissons ayant été pêchés donc sur la première ligne j'obtenais 1  10  6  3  7  6  et la deuxième  3 5 2 4 6 1
Ca n'allait pas donc on a décidé de faire un tableau dynamique sous Excel et injecter les données avec des 0 sur les poissons non pêchés. (Je pensais que ca serait plus simple)
Maintenant ça m'affiche tous les poissons même ceux à 0.
Le problème est de supprimer tous les poissons n'ayant jamais été pêchés (donc ici le 7)
Donc faire une addition sur mes résultats. et c'est là que je bloque. N'ayant qu'une seule ligne de ma requête donc un seul tableau, je ne sais pas comment faire pour retirer les  
poissons jamais pêchés sur le site ( il y a 73 espèces). Je peux avoir une seule pêche ou plusieurs.
 
Partie du résultat que je récupère sous la forme d'un tableau en comprenant plusieurs.  
Array ( [date_operation] => 2010-05-20 [0] => 2010-05-20 [code_operation] => 87320000352 [1] => 87320000352 [ABH] => 0 [2] => 0 [ABL] => 0 [3] => 0 [ALA] => 0 [4] => 0 [ALF] => 0 [5] => 0 [ANG] => 1 [6] => 1 [APP] => 0 [7] => 0 [ASP] => 0 [8] => 0 [ATH] => 0 [9] => 0 [BAF] => 11 [10] => 11 [BBG] => 0 [11] => 0 [BOU] => 0 [12] => 0 [BRB] => 0 [13] => 0 [BRE] => 0 [14] => 0 [BRO] => 0 [15] => 0 [CAA] => 0 [16] => 0 [CAG] => 0 [17] => 0 [CAK] => 0 [18] => 0 [CAR] => 0 [19] => 0 [CAS] => 0 [20] => 0 [CCO] => 0 [21] => 0 [CCU] => 0 [22] => 0 [CHA] => 185 [23] => 185 [CHE] => 14 [24] => 14 [CMI] => 0 [25] => 0 [CTI] => 0 [26] => 0 [CYP] => 0 [27] => 0 [EPI] => 0 [28] => 0 [EPT] => 19 [29] => 19 [FLE] => 0 [30] => 0 [GAM] => 0 [31] => 0 [GAR] => 0 [32] => 0 [GOU] => 53 [33] => 53  
 
Voici mes parties de codes

Code :
  1. $total_poisson = $bdd ->query('SELECT O.date_operation , P.*
  2.           FROM PECHER_ABONDANCE P
  3.           NATURAL JOIN OPERATION O
  4.           WHERE code_wama_station = "'.$_SESSION['code_wama_session'].'" order by date_operation ');
  5.    while( $donnee_p = $total_poisson -> fetch()){
  6.     $annee_poisson = date('Y',strtotime($donnee_p['date_operation']));
  7.      $test = 0 ;
  8.      for($i = 0 ; $i < 73 ; $i++){
  9.       $test += $donnee_p[20][$i] ;
  10.      }
  11.    }
  12.      echo $test ;
  13. en commentaire car ne fonctionne pas terrible, c'était des test que j'ai conservé
  14.     /*for($i = 1 ; $i<73 ; $i++){
  15.      if($i == 1 )
  16.       echo date('Y',strtotime($donnee_p['date_operation']));
  17.      else{
  18.       $ang = $donnee_p[$i];  
  19.       echo " ".$ang." ";
  20.      }*/
  21.    //  while ( $tab_annee_civile > $o ) {
  22.   /*    for($i = 1 ; $i<73 ; $i++){
  23.        if($i == 1 )
  24.         echo date('Y',strtotime($donnee_p['date_operation']));
  25.        else{
  26.         $ang = $donnee_p[$i];  
  27.      //   echo " ".$ang." ";
  28.        }
  29.       }
  30.    //  }
  31.      
  32.      
  33.    }  
  34.   */


 
Merci d'avance pour toutes vos réponses


Message édité par pulpipi45 le 20-08-2013 à 12:24:12
mood
Publicité
Posté le 20-08-2013 à 10:18:55  profilanswer
 

n°2200356
sltpaulo
Posté le 20-08-2013 à 11:26:45  profilanswer
 

Salut, essaye ça :
 

Code :
  1. $array = array();
  2.             $array_b = array();
  3. while( $donnee_p = $total_poisson -> fetch()){
  4.             foreach ($donnee_p as $key => $value) {
  5.                 if (!is_numeric($key)) {
  6.                     $array[$key] += $value;
  7.                     $array_b[date('Y', strtotime($donnee_p['date_operation']))][$key] = $value;
  8.                 }
  9.             }
  10. }
  11.             $head = "";
  12.             $body = "";
  13.             foreach ($array as $key => $value) {
  14.                 if ($value != 0)
  15.                     $head .= "<th>$key</th>";
  16.             }
  17.             $line = "";
  18.             foreach ($array_b as $key => $value) {
  19.                 $line .= "<tr>";
  20.                 foreach ($value as $value2) {
  21.                     $line .= "<td>$value2</td>";
  22.                 }
  23.                 $line .= "</tr>";
  24.             }
  25.             $table = "<table><thead><tr>$head</tr></thead><tbody>$line></tbody></table>";
  26. (edit) echo $table;


Message édité par sltpaulo le 20-08-2013 à 11:27:33
n°2200361
pulpipi45
Posté le 20-08-2013 à 11:39:29  profilanswer
 

re.
Merci pour ta rapidité de réponse.
Voici le message d'erreur. CCO correspond à une espèce. J'ai ce message pour toutes mes espèces de poissons. et je ne vois pas pourquoi. Je vais encore jeté un coup d'oeil a cet endroit la.  
 
( ! ) Notice: Undefined index: CCO in C:\wamp\www\01_08\src\composition.php on line 222
Sur le code ci-dessus, ça correspond a la ligne 6
 
Par contre nouveauté, Tout s'affiche. Merci


Message édité par pulpipi45 le 20-08-2013 à 11:40:21
n°2200367
sltpaulo
Posté le 20-08-2013 à 12:02:28  profilanswer
 

Re, nje teste pas le code, je l'écris en bloc donc c'est juste des idées, mais effectivement, j'ai oublié un truc
 

Code :
  1. foreach ($array_b as $key => $value) {
  2.                 $line .= "<tr>";
  3. -->                foreach ($value as $key2 =>$value2) {
  4. --->                  if($array[$key2] != 0)
  5.                             $line .= "<td>$value2</td>";
  6.                 }
  7.                 $line .= "</tr>";
  8.             }


 
 
edit :  tu peux aussi mettre des guillemets sur certaines variables pour spécifier que c'est un string mais normalement tu as pas besoin :

Code :
  1. //example
  2. f($array["$key2"] != 0)


Message édité par sltpaulo le 20-08-2013 à 12:05:17
n°2200370
pulpipi45
Posté le 20-08-2013 à 12:22:38  profilanswer
 

re
J'ai toujours ce message mais je vais chercher.
Après 3 jours la dessus, tu me dis que tu codes ça a l'aveugle et CA MARCHE. Ca énerve lol, mais bon maintenant faudra travailler pour avoir ton expérience. Je te remercie beaucoup, c'est exactement le résultat que je souhaité obtenir.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  php problème tableau suite requête MySQL [résolu]

 

Sujets relatifs
Probleme import csv dans une base de donnéeprobleme php raider
probleme sur moteur de recherche sur page HTMLProblème de code Wordpress, le design fait des siennes!
[PHP] Problème de chemin relatifTester execution d'une requete SQL
Problème Onmouseoverproblème avec article dans la page membre
Probleme JAVA en ligne de commande 
Plus de sujets relatifs à : php problème tableau suite requête MySQL [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR