Le contexte : Je souhaite afficher le résultat d'une requête de type :
Code :
SELECT t1.champ1, t1.champ2, t2.champ1
FROM table AS t1 INNER JOIN table AS t2
ON t1.id_parent=t2.id
La table en question est réflexive (id_parent indique l'id d'une autre ligne dans la même table)
table(id, id_parent, champ1, champ2)
La requête est générée par un code php, soumise à phpMyAdmin puis affichée dans un tableau
Le problème n°1 : La variable contient les valeurs de tous les champs que j'ai à afficher en double...
Pseudo-solution : je n'affichais qu'une fois sur deux les résultats (méthode très peu recommandée vu la suite)
Le problème n°2 : Dans le cas d'une jointure sur une table réfléxive, les valeurs de t1.champ1 et de t2.champ1 ne sont pas en double.
Ce qui implique un décalage très désagréable dans le tableau d'affichage des résultat de la requête.
Le plus étrange c'est qu'à titre de vérification j'ai copié ma requête générée en php directement sous phpMyAdmin et que là tout marche très bien et phpMyAdmin ne semble, lui, pas avoir de mal à distinguer les cas où il n'y à qu'une fois la valeur de ceux où elle est double.
Ce que j'aimerais c'est avoir toujours toutes les valeurs en double dans mon résultat (là au pire je prends mon système D pour afficher quelque chose de correct) ou alors qu'on me dise d'où vient cette étrangeté.
[edit]
Désolé je pensais m'être bien exprimé.
j'envoie un requête SQL via php et je récupère le tout dans une variable.
A mon grand étonnement toutes les valeurs sont répétées deux fois SAUF celles qui sont concernées par la jointure de table réflexive : dans mon exemple il s'agit de "champ1".
Mes questions sont :
1) Pourquoi les valeurs sont-elles répétées? (c'est pour ça que je les affiche une fois sur deux)
2) SI recevoir les valeurs en double est normal, pourquoi certaines ne sont pas en double comme les autres?
Voilà, encore désolé de vous avoir embrouillé
C'était ce qui me permet d'afficher le résultat dans un tableau (Y a plein de variables mais c'est pour savoir quand revenir à la ligne)
Merci d'avance!
Message édité par kamerleon le 09-07-2007 à 23:34:38
Sous MySQL tout se passe très bien. phpMyAdmin me fait un joli tableau.
C'est en php que le problème se situe puisque je souhaite récupérer les résultats dans une variable puis afficher ces résultats.
Pour tester crée deux tables à deux champs sous phpmyAdmin, et dans ta page php connectes toi à ta base ainsi créée et reprends ce code pour afficher :
Code :
$query="SELECT t1.champ1
FROM ( table1 AS t1 INNER JOIN table2 AS t2 ON t1.idtable1=t2.idtable1 )
GROUP BY t1.champ1";
$result=mysql_query($query)or die("La requête $query à échoué!" );
echo ("La variable result contient :<BR>" );
while($line=mysql_fetch_array($result)){
foreach ($line as $cell){
echo $cell."<BR>";
}
}
Tu verras, que les valeurs se répètent deux fois
Merci déjà d'y avoir prêté attention ^^
Kangol> Ouais ok merci pour le lien En fait c'est comme mysql_fetch_assoc() sauf qu'on met la constante MYSQL_ASSOC pour dire qu'on souhaite avoir un tableau associatif. En fait ça revient à utiliser mysql_fetch_assoc(), mais bon j'avais un doute
Message édité par kamerleon le 20-07-2007 à 09:27:33