Afficher une requete sql en plusierus collone

Signaler
Messages postés
2
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
5 février 2008
-
Messages postés
2
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
5 février 2008
-
J'ai une table sql comme ça
Code_ind       Valeur      année 
     1                 200         2006
     2                 100         2007 
     3                 300         2006
     1                 45           2007
     1                 11           2008
     2                 125        2008

je veux avoir un etat de sortie comme ceci et j'ai pas pu le faire aider moi svp

Code_ind         2006      2007    2008
       1                200          45       11
       2                              100       10        
       3                300

4 réponses

Messages postés
49
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
3 février 2008

Zalut bellima,

Bon je sais pas si ce que je vais te proposer et très "propre", mais c'est comme ca que je ferais :

// liste des années
$sql = "SELECT annee FROM table ORDER BY annee"
$req = mysql_query($sql);
echo "<tr>";
while ($tab = mysql_fetch_assoc($req))
    echo "<th>$tab[annee]</th>";
echo "</tr>\n";

//recuperer les valeur dans un tableau 2D (code_ind, annee)
$sql = "SELECT * FROM table ORDER BY code_ind, annee"
$req = mysql_query($sql);
$col = array();
while ($tab = mysql_fetch_assoc($req))
    $col[$tab['code_ind']][$tab['annee']] = $tab['valeur'];

// afficher
foreach ($col as $code_ind=>$lst_annee)
{
    echo "<tr><td>$code_ind</td>";
    foreach ($lst_annes as $valeur)
       echo "<td>$valeur</td>";
    echo "</tr>\n";
}

Bien evidement, ca doit pouvoir etre optimisé, mais ca devrait deja marcher...
Je suis desolé, j'ai pas mis beaucoup de commentaires, mais je suis un newbie de la reponse sur ce forum
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
$years = array(); $i = 0;

$qry = "SELECT DISTINCT annee FROM table ORDER BY annee ASC";

$rs = mysql_query($qry);
while ($tmp = mysql_fetch_assoc($rs))
{
    $years[++$i]=$tmp['annee'];
}
$qry = "SELECT Code_ind, ";
foreach ($years as $y) {
      $qry .= "SUM(IF(annee=".$y.",valeur,NULL)) AS `".$y."`";
}
$qry .= " GROUP BY Code_ind";

$rs = mysql_query($qry);
while ($tmp = mysql_fetch_assoc($rs))
{
    foreach ($tmp as $k => $v){
       echo $k."=>".$v;
    }

}



Quelque chose comme ca pourrait aussi faire... mais je lai tapper direct dans le forum... jai pas tester.
<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
Je viens de me relire et ceci:

foreach ($years as $y) {
      $qry .= "SUM(IF(annee=".$y.",valeur,NULL)) AS `".$y."`";
}
$qry .= " GROUP BY Code_ind";
deverait etre cela:

foreach ($years as $y) {
      $qry .= "SUM(IF(annee=".$y.",valeur,NULL)) AS `".$y."` ";
}
$qry .= "GROUP BY Code_ind";



mais j'ai toujours pas tester

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
Messages postés
2
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
5 février 2008

Merci hellorem
j'ai essayé ce quz tu m'as ecrit et ça n'a pas marcher