Page 1 sur 1

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

Posté : 14 juil. 2010, 13:01
par Merme
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 !!!

Re: Affichage d'un array résultant de 2 tables

Posté : 14 juil. 2010, 13:06
par Ryle
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 :)

Re: Affichage d'un array résultant de 2 tables

Posté : 14 juil. 2010, 14:13
par Merme
Salut,

Merci de m'aider.

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

Re: Affichage d'un array résultant de 2 tables

Posté : 14 juil. 2010, 14:24
par Ryle
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 ;)

Re: Affichage d'un array résultant de 2 tables

Posté : 14 juil. 2010, 14:27
par Ganesh
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.

Re: Affichage d'un array résultant de 2 tables

Posté : 14 juil. 2010, 15:20
par Merme
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 !!!

Re: Affichage d'un array résultant de 2 tables

Posté : 15 juil. 2010, 00:44
par stealth35
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:

Re: Affichage d'un array résultant de 2 tables

Posté : 15 juil. 2010, 01:05
par Ganesh
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.

Re: Affichage d'un array résultant de 2 tables

Posté : 15 juil. 2010, 10:08
par stealth35
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:

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

Posté : 16 juil. 2010, 21:51
par Ganesh
oui, par défaut, et qui dit par défaut, dit que ça ne l'ai pas forcément ;)