[Résolu] Affichage d'un array résultant de 2 tables

Petit nouveau ! | 3 Messages

14 juil. 2010, 13:01

Bonjour @ tous,

Voila je tourne en rond depuis quelques temps sur mon problème.

Je fais un select sur 2 tables et je renvoie le tout dans un array.

Quand j'exécute ma query sous phpmyadmin je retrouve bien le bon résultat, donc la query en elle même est juste.
Par contre quand je veux afficher le résultat je n'ai aucun retour.

Voici le code.
$select = "SELECT 
  participants_10km.nom,
  participants_10km.prenom,
  participants_10km.dossard,
  `paiements`.nom,
  `paiements`.prenom,
  `paiements`.cheque,
  `paiements`.liquide,
  `paiements`.trans_id
FROM
  participants_10km,
  `paiements`
GROUP BY
  participants_10km.nom,
  participants_10km.prenom,
  participants_10km.dossard,
  participants_10km.paiement,
  `paiements`.nom,
  `paiements`.prenom
HAVING
  `paiements`.nom = participants_10km.nom AND 
  `paiements`.prenom = participants_10km.prenom AND 
  `paiements`.cheque = 0 AND 
  `paiements`.liquide = 0
  AND `paiements`.trans_id = ''";

$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
echo"
<div id='cssnom'> <b>DOSSARD</b> <b>NOM</b> <b>PRENOM</b></div>

";

while($donnes = mysql_fetch_array($result))
{
echo"
<div id='cssprenom'> $donnees[dossard] $donnees[nom] $donnees[prenom] </div>

";
}
Merci par avance pour votre aide !!!
Modifié en dernier par Merme le 14 juil. 2010, 16:37, modifié 3 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 juil. 2010, 13:06

Essayes de sortir les variables de tes chaines, ça permet également d'avoir un code plus lisible avec la coloration syntaxique :)
echo "<div id='cssprenom'>". $donnees['dossard']." ".$donnees['nom']." ".$donnees['prenom']."</div>";
Tu peux également en profiter pour ajouter des quotes autour des noms des index de ton tableau, cela permet à php de savoir qu'il s'agit d'une chaine de texte et non pas d'une constante dont-il doit aller chercher la valeur :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 3 Messages

14 juil. 2010, 14:13

Salut,

Merci de m'aider.

Par contre cela n'a rien changer, toujours le même résultat à savoir aucun affichage du résultat ...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 juil. 2010, 14:24

Arf, en effet, une petite erreur de syntaxe... tu stockes le résultat du fetch_array dans une variable $donnes et tu utilises ensuite une variable $donnees ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 55 Messages

14 juil. 2010, 14:27

Bonjour,

mysql_fetch_array renvoie un tableau indicé, pas un tableau associatif. Il te faut donc utiliser mysql_fetch_assoc.
Mais tu rencontreras un autre problème, tu as plusieurs champs qui ont le même nom, il faut donc que tu leur donnes des alias dans ta requête.

P.S.: A vue de nez comme ça, j'aurais tendance à dire que ta base données souffre de problèmes de conception qui la rendent beaucoup plus lourde qu'elle ne devrait l'être.

Petit nouveau ! | 3 Messages

14 juil. 2010, 15:20

Mais quelle brêle !!! ;)

Effectivement avec $donnees cela fonctionne beaucoup mieux.

Pour répondre à ganesh, oui mes tables n'ont pas été très bien pensé, j'ai rajouter pas mal de champ au fil de l'eau.
Et cela l'a pas mal alourdie, je ferai mieux l'année prochaine :)

Merci à vous messieurs !!!

ViPHP
ViPHP | 5462 Messages

15 juil. 2010, 00:44

mysql_fetch_array renvoie un tableau indicé, pas un tableau associatif. Il te faut donc utiliser mysql_fetch_assoc.
non, mysql_fetch_array c'est mysql_fetch_row + mysql_fetch_assoc :wink:

Eléphant du PHP | 55 Messages

15 juil. 2010, 01:05

mysql_fetch_array renvoie un tableau indicé, pas un tableau associatif. Il te faut donc utiliser mysql_fetch_assoc.
non, mysql_fetch_array c'est mysql_fetch_row + mysql_fetch_assoc :wink:
Pas exactement, mysql_fetch_array renvoie un tableau qui peut être associatif, indexé ou les deux en fonction du second paramètre de la fonction. Il me semblait que ce paramètre était par défaut à MYSQL_NUM mais il est en effet à MYSQL_BOTH et renvoie donc un tableau indexé et associatif par défaut.

ViPHP
ViPHP | 5462 Messages

15 juil. 2010, 10:08

mysql_fetch_array renvoie un tableau indicé, pas un tableau associatif. Il te faut donc utiliser mysql_fetch_assoc.
non, mysql_fetch_array c'est mysql_fetch_row + mysql_fetch_assoc :wink:
Pas exactement, mysql_fetch_array renvoie un tableau qui peut être associatif, indexé ou les deux en fonction du second paramètre de la fonction. Il me semblait que ce paramètre était par défaut à MYSQL_NUM mais il est en effet à MYSQL_BOTH et renvoie donc un tableau indexé et associatif par défaut.
oui, donc par default mysql_fetch_array c'est mysql_fetch_row + mysql_fetch_assoc :wink:

Eléphant du PHP | 55 Messages

16 juil. 2010, 21:51

oui, par défaut, et qui dit par défaut, dit que ça ne l'ai pas forcément ;)