Pb pour afficher le résultat souhaité

fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006 - 11 oct. 2005 à 17:08
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 12 oct. 2005 à 00:20
Bonjour, j'effectue une requete sur plusieurs bases et ensuite je souhaite afficher le résultat sous forme de tableau, cela marchait très bien pour un premier type de requête mais pour un second type cela semble ne pas marcher, cela fait déjà un petit bout de temps que j'essaye de lire, relire moncode et je ne parviens pas à voir où est mon erreur !! si quelqu'un pouvait m'aider !!!
il m'affiche bien ma 1ère ligne et ma 1ère colonne mais pas les sommes (coresspondant à l'intersection ligne/colonne) !! alors que pour une autre requête cela fonctionne très bien !!! c'est ça que je ne comprends pas en plus !! merci d'avance voici ma partie de code :
<?php
...

$query_reqb = mysql_query("SELECT b1.CODE_GROUPE,
b1.CODE_REGROUPT,
b2.NOM_REGROUPT,
b2.CODE_REGROUPT,


b3.CODE_GROUPE,
b3.CODE_ELT,
b3.TYPE_ELT,


b5.DECOM,
b5.ANNEE,
SUM( b5.$donnees ) AS somme


FROM $cnx.groupes AS b1,
$cnx.regroupt AS b2,
$cnx.det_grp AS b3,
$unedic.unedic AS b5


WHERE b1.CODE_REGROUPT = '$territoire' AND
b1.TYPE_ELT = '$TYPE_ELT' AND
b3.CODE_GROUPE= '$CODE_GROUPEB' AND
b1.CODE_GROUPE = b3.CODE_GROUPE AND
b3.CODE_ELT= b5.DECOM AND
b5.ANNEE>='2000' AND
b5.ANNEE<='2001'


GROUP BY b3.CODE_ELT, b5.ANNEE
ORDER BY b3.CODE_ELT, b5.ANNEE");

if (!$query_reqb)
{
die('Requête A detail invalide : ' . mysql_error());
}
if ($query_reqb)
{ echo "OK REQ A detail BIEN DEROULE";}
//while ($data = mysql_fetch_array($query_reqb))
//{ echo $data['somme'];
// echo $data['ANNEE'];
// echo $data['CODE_ELT'];
//}} quand je mets ça il m'affiche bien mes résultats !!


// Initialisation
$tab = array();
$listeparam1 = array();
$listeparam2 = array();
while($row = mysql_fetch_array($query_reqb)) {
$listeparam1[$row['ANNEE']] = $row[ANNEE];
$listeparam2[$row['CODE_ELT']] = $row[CODE_ELT];
$tab[$row[ANNEE]][$row[$CODE_ELT]] = $row[somme];
}
// Si nous avons bien récupéré des données
if(!empty($listeparam1)) {
echo '' , \"\n\";
// Affichage de la ligne d'en-tête
echo ' ----
', \"\n\";
echo ' CODE_ELT ET ANNEE, ', \"\n\";

foreach($listeparam1 as $ANNEE) {
echo '' , $ANNEE, ', ', \"\n\";
}
echo ' ', \"\n\";

// Affichage des lignes de données
echo ' ----
', \"\n\";
foreach($listeparam2 as $CODE_ELT) {
// Affichage du pays
echo ' ', $CODE_ELT, ', ', \"\n\";

// Affichage des données pour chaque année
foreach($listeparam1 as $ANNEE) {
if(isset($tab[$ANNEE][$CODE_ELT])) {
echo ' ', $tab[$ANNEE][$CODE_ELT], ', ', \"\n\";
} else {
echo ' 0, ', \"\n\";
}
}
echo ' ', \"\n\";
}
echo '
', "\n";
}
else {
echo 'ça marche pas';}
}
?>

1 réponse

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
12 oct. 2005 à 00:20
"f ($query_reqb)
{ echo "OK REQ A detail BIEN DEROULE";}
//while ($data = mysql_fetch_array($query_reqb))
//{ echo $data['somme'];
// echo $data['ANNEE'];
// echo $data['CODE_ELT'];
//}} quand je mets ça il m'affiche bien mes résultats !!

// Initialisation
$tab = array();
$listeparam1 = array();
$listeparam2 = array();
while($row = mysql_fetch_array($query_reqb)) {
$listeparam1[$row['ANNEE']] = $row[ANNEE];
$listeparam2[$row['CODE_ELT']] = $row[CODE_ELT];
$tab[$row[ANNEE]][$row[$CODE_ELT]] = $row[somme];
}"

Tu fetch 2 fois... fait tout en 1 seul morceau !



D'ailleurs, dans ton 2ème fetch_array(), tu va créer
des variables de type 'array' pour ensuite y faire un foreach ? Beurk
je trouve !



<?php


echo '';
// Affichage de la ligne d'en-tête

echo
'----
ANNEE |CODE_ELT |SOMME |';

while($row = mysql_fetch_array($query_reqb)) {

echo '----
';

echo ''. $row['ANNEE'].', ';

echo ' '$row['CODE_ELT'].', ';

echo ''.$row['somme'].', ';

echo '';

}

echo '
';

?>


Pourquoi se faire chier autant ;) ?



J'y pense :



"
if (!$query_reqb)
{
die('Requête A detail invalide : ' . mysql_error());
}
if ($query_reqb)"

Tu vires tout ca ! Pourquoi faire 2 tests quand un seul suffit ?

if (!$query_reqb) die ('Erreur de requete'.mysql_error() );



// Et la tu continu... vue que si y'a pas le message d'erreur, c'est que ta requete est bonne !
0
Rejoignez-nous