joindre 2 champs au contenu différents

joindre 2 champs au contenu différents - PHP - Programmation

Marsh Posté le 08-09-2005 à 09:56:46    

Bonjour, j'ai installer sur mon site un quiz pour les membres ; jai également une page qui permet au membre de voir ses scores sur les quiz joués. Ma question est : je cherche a montrer au membre les quiz joués avec le score mais rajouté ceux quil n'a pas encore joués. A la place de mettre le score mettre une image avec un lien ou autre chose qui l'emmène au jeu.
Le problème est que je n'arrive pas à unir un champ en faisant une jointure (en pensant que c'est la solution). Le nom des quiz sont enregistrés dans la Table 1 avec l'id et la categorie pour le nom du quiz ; alors que pour l'affichage que résultat Table 2 il va chercher le nom du quiz par le champ "categorie" comme la Table 1 sauf que le contenu est l'id et non le nom.
 
Table 1; champ : id, categorie
Table 2, champ : numero, nomvisiteur, reponsesjustes, categorie*
---------------
* Ce champ ne va pas mettre la categorie de la table 1 mais l'id.
---------------
Actuellement j'affiche le résultat comme suit :

Code :
  1. $result=mysql_query("select reponsesjustes, categorie from quiz_visiteur where nomvisiteur='$cookie[1]'" );
  2.    echo "<TABLE WIDTH=\"100%\" CELLSPACING=\"2\" CELLPADDING=\"2\" BORDER=\"0\"><TR><TD CLASS=\"HEADER\">\n";
  3.    echo "Quizz</td><TD>Note</td></tr>";
  4.    while (list($reponsesjustes, $categorie) = mysql_fetch_row($result)) {
  5.       $rowcolor=tablos();
  6.       $result2=mysql_fetch_array(mysql_query("select categorie from quiz_categorie where id='$categorie'" ));
  7.       echo "<tr $rowcolor><td>$result2[categorie]</td><td>$reponsesjustes/<b>$nbquestion</b></td></TR>";
  8.    }
  9.    echo "</table>";


 
Voilà, est-ce-que quelqu'un peux m'aider en espérant avoir été clair et pas trop long.
Merci !

Reply

Marsh Posté le 08-09-2005 à 09:56:46   

Reply

Marsh Posté le 08-09-2005 à 10:04:51    

Tu pourrais nettoyer un peu ton code? (indenter, tags html en minuscule,...) Parceque la on y voit rien


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-09-2005 à 11:29:39    

Excusez, là c'est mieux ?

Code :
  1. echo "<table><tr><td>Quizz</td><TD>Note</td></tr>";
  2.        $result=mysql_query("select reponsesjustes, categorie from quiz_visiteur where nomvisiteur='$cookie[1]'" );
  3.        while (list($reponsesjustes, $categorie) = mysql_fetch_row($result)) {
  4.        $result2=mysql_fetch_array(mysql_query("select categorie from quiz_categorie where id='$categorie'" ));
  5. echo "<tr><td>$result2[categorie]</td><td>$reponsesjustes/$nbquestion</td></tr>";}
  6. echo "</table>";

Reply

Marsh Posté le 08-09-2005 à 11:36:07    

Deja c'est $result2['categorie'] et non $result[categorie]
 
Apres, evite de faire des fetch_array(query(requete)), fait ca calmement sur plusieurs lignes, ca sera beaucoup mieux.
 
Ensuite la requete , regarde quels champs sont concernés et tu verras probablement la requete apparaitre


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-09-2005 à 12:49:29    

Deja c'est $result2['categorie'] et non $result2[categorie], si je fais ce changement j'ai des erreurs (`T_STRING' or `T_VARIABLE' or `T_NUM_STRING').
----------
Comme ça ?

Code :
  1. echo "<table><tr><td>Quizz</td><TD>Note</td></tr>";
  2.        $result=mysql_query
  3.        ("select reponsesjustes, categorie from quiz_visiteur where nomvisiteur='$cookie[1]'" );
  4.      
  5.        while (list
  6.        ($reponsesjustes, $categorie) = mysql_fetch_row($result)
  7.        ) {       
  8.         $result2=mysql_fetch_array
  9.         (mysql_query
  10.         ("select categorie from quiz_categorie where id='$categorie'" )
  11.         ); 
  12. echo "<tr><td>$result2[categorie]</td><td>$reponsesjustes/$nbquestion</td></tr>";} 
  13. echo "</table>";


---------
Ensuite la requete , regarde quels champs sont concernés et tu verras probablement la requete apparaitre.
Je la regarde tellement que je la connait par coeur. Peut-être le where de la 1ere requête qui bloque dès le départ l'affichage entier ?
Merci !

Reply

Marsh Posté le 08-09-2005 à 13:35:09    

T bouché ou koi ?  
 
$result2['categorie']

Reply

Marsh Posté le 08-09-2005 à 14:00:23    

albanimal a écrit :

si je fais ce changement j'ai des erreurs (`T_STRING' or `T_VARIABLE' or `T_NUM_STRING')


normal avec un tableau, soit tu le sors des quotes, soit tu l'entoures d'accolades
par exemple :

echo "<tr><td>{$result2['categorie']}</td><td>$reponsesjustes/$nbquestion</td></tr>";


Reply

Marsh Posté le 08-09-2005 à 14:00:58    

Bouché non mais aveugle surement ; tu parles de la ligne 14 ...$result2[categorie].... ?
Parce que si je remplace cette partie par $result2['categorie'] plus rien ne marche mais avec $result2[categorie] il fonctionne parfaitement.
Merci !

Reply

Marsh Posté le 08-09-2005 à 16:30:09    

On a posté pratiquement en même-temps, merci pour l'explication ; c'est fait.
Il me reste plus qu'a trouver la requête.

Reply

Marsh Posté le 08-09-2005 à 22:07:42    

Slt, je nage complètement, je n'arrive pas à trouver cette foutue requête et surtout google n'est plus mon amis impossible de trouver ou incappable de voir au moins un exemple ; si quelqu'un peut m'aider ?
Merci !

Reply

Marsh Posté le 08-09-2005 à 22:07:42   

Reply

Marsh Posté le 08-09-2005 à 22:14:48    

Dessine un shema des tables en jeu sur un papier, relie les champs qui sont liés et tu verras les jointures a faire ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-09-2005 à 22:18:59    

Les jointure je suis dessus déjà mais le problème est le champ "categorie" parce que dans la table "quiz_categorie" c'est le nom du quiz mais dans la table "quiz_visiteur" il prend l'"ID" de la table "quiz_categorie".
Voilà !

Reply

Marsh Posté le 08-09-2005 à 22:21:44    

je comprend pas bien ton probleme ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 08-09-2005 à 22:41:12    

Le code ci-dessous permet de montrer au membre le résultat des quiz qu'il a joué, j'aimerai ajouter les quiz qu'il n'a pas joué et mettre un lien pour y accéder. Avoir un tableau récapitulatif complet quiz fait et à faire.
Table 1 : quiz_categorie ; champ : id, categorie  
Table 2 : quiz_visiteur, champ : numero, nomvisiteur, reponsesjustes, categorie
Dans le "$result2" il va chercher la categorie par son ID "where id='$categorie'" et non par le champ categorie, c'est pour ca que je n'arrive pas à faire de jointure (par rapport à mon niveau bien sur)

Code :
  1. echo "<table><tr><td>Quizz</td><TD>Note</td></tr>"; 
  2.        $result=mysql_query
  3.        ("select reponsesjustes, categorie from quiz_visiteur where nomvisiteur='$cookie[1]'" ); 
  4.        
  5.        while (list
  6.        ($reponsesjustes, $categorie) = mysql_fetch_row($result)
  7.        ) {       
  8.         $result2=mysql_fetch_array
  9.         (mysql_query
  10.         ("select categorie from quiz_categorie where id='$categorie'" )
  11.         ); 
  12. echo "<tr><td>$result2[categorie]</td><td>$reponsesjustes/$nbquestion</td></tr>";} 
  13. echo "</table>";


Merci.

Reply

Marsh Posté le 08-09-2005 à 22:54:49    

http://www.nexen.net/docs/mysql/an [...] ?lien=join

Code :
  1. SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id LEFT JOIN table3 ON table2.id=table3.id;


 
enfin dans ton cas, ca serait du genre  

Code :
  1. SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id LEFT JOIN table3 ON table1.id=table3.id;


Reply

Marsh Posté le 09-09-2005 à 17:48:32    

Slt, j'ai enfin trouvé après des heures et des heures :

Code :
  1. opentable();
  2.    $result=mysql_query
  3.    ("select id, categorie from ".$NPDS_Prefix."quiz_categorie" );
  4.  
  5. echo "<table><tr>\n";
  6. echo "<td>ID</td><td>Nom du quiz</td><td>Note</td></tr>";
  7.    while (list
  8.    ($id, $categorie) = mysql_fetch_row($result)) {
  9.    $result2=mysql_fetch_array
  10.    (mysql_query
  11.    ("select reponsesjustes from quiz_visiteur where categorie='$id' AND nomvisiteur='$cookie[1]'" )
  12.     );
  13. echo "<tr><td>$id</td><td>$categorie</td><td>{$result2['reponsesjustes']}</td></tr>";
  14.    }
  15. echo "</table>";
  16. closetable();


Maintenant il ne me reste plus qu'a mettre un lien quand il n'y a pas de note, il faut que je mette une condition mais comment ; sur "result2" ou sur "{$result2['reponsesjustes']} ?
Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed