[reglé]Tentative de jointure - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [reglé]Tentative de jointure (/showthread.php?tid=1417) Pages :
1
2
|
[reglé]Tentative de jointure - blackduty - 04-07-2007 J'ai 6 tables: info_carte, the_personnage, grade_europe_e, grade_europe_o, grade_afrique, grade_pacifique. (enfin un peu plus, mais bon, ce sont celle qui nous intéresse ici ^^) Table: info_carte Colonne 1: theatre = contient le theatre d'opération (europe_e, europe_o, pacifique ou afrique) Table: the_personnage Colonne 1: id Colonne 2: alliance (contient axe ou allie) Colonne 3: nom Colonne 4: compte etc... Colonne X: grade (contient un numéro: 1,2 etc...) Table: grade_X (les 4 tables sont identiques mais ne possèdent pas le même remplissage) Colonne 1: id Colonne 2: axe (contient le nom des grades pour l'axe) Colonne 3: allie (contient le nom des grades pour les allies) Colonne 4: pc_requis Donc le but de la manoeuvre, c'est d'afficher le grade du personnage. Grade qui n'aura pas le même nom suivant les théâtres d'opérations. Je pense que dans ce cas, il faut une jointure (ma première... Ouais !) mais hélas, ça ne se passe pas comme je l'espérais... snif ! Voici la partie de code concernée (il est un peu réduit volontairement ): Code PHP :
Mon message d'erreur: Citation :Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\documents and settings\hp_administrateur\mes documents\projet_aegis\jeu\interface_jeu\interface.php on line 37 Donc visiblement, le problème viendrait de: Code PHP :
Donc si ça vient bien de ceci, quelle fonction utiliser pour pouvoir dispatcher les résultats de ce genre de chose ? Sinon, le problème viendrait d'où selon vous ? Merci d'avance pour votre aide PS: si vous voyez d'autre chose horrible, n'hésitez pas a le signaler ! RE: Tentative de jointure - pascal - 04-07-2007 affiche ta requete puis teste là dans phpmyadmin. à mon avis, ça vient pê de la jointure, ça se fait sur le nom du champ, pas sur un alias de résultat. ( sinon coté structure de base de données, ça me parait louche... pourquoi ne pas ajouter une table contenant le camp ( afrique, pacifique, ... ) ? ça simplifiera pas mal tes requetes. A+ Pascal PS : va faire un tour sur le tutorial SQL dans ma signature, ça t'aidera à débugguer. RE: Tentative de jointure - Nessper - 04-07-2007 Pour ma part je n'ai jamais fait de jointures (je n'en ai jamais trouvé l'utilité), mais je peux quand même te dire ce que je ferais. Pour récupérer le grade : Code PHP :
Je pense que ça va marcher RE: Tentative de jointure - pascal - 04-07-2007 Nessper a écrit :Pour ma part je n'ai jamais fait de jointures (je n'en ai jamais trouvé l'utilité), mais je peux quand même te dire ce que je ferais. tu fais des jointures sans le savoir une condition sur les id entre 2 tables, c'est une jointure A+ Pascal RE: Tentative de jointure - Nessper - 04-07-2007 ah ok ^^. Mais alors quel intérêt de faire une "vraie" jointure ? plus rapide ? RE: Tentative de jointure - pascal - 04-07-2007 concernant la rapidité, je ne sais pas. par contre on peut faire dans une jointure des trucs plus difficiles à faire avec un WHERE : _ toutes les lignes d'une table, avec un lien optionnel dans la 2e table _ toutes les lignes d'une table qui n'ont pas de correspondance dans la 2e table c'est aussi une question de lisibilité de requête : _ les relations entre tables = les jointures _ les conditions sur les données ( ex : id du joueur connecté ) : WHERE A+ Pascal RE: Tentative de jointure - blackduty - 04-07-2007 Bon, j'ai une erreur directement dans phpmyadmin :hahahaha: Citation :#1064 - Erreur de syntaxe pr�s de '"SELECT the_personnage.*, grade_$theatre.id AS grade_id, grade_$' � la ligne 1 hum, par contre, je ne vois pas (ou je ne comprend pas) ceci: Citation :ça se fait sur le nom du champ, pas sur un alias de résultat Enfin: Citation :pourquoi ne pas ajouter une table contenant le camp (afrique, pacifique, ... ) Parce que Afrique, Pacifique etc... ne sont pas des camps mais des théâtres d'opérations Si on résume mes camps, on arrive a une confrontation binaire Axe/Allie. Mais suivant le théâtre, la confrontation n'est pas la même: Ex: Europe_O: On a USA/Allemagne Europe_E On a URSS/Allemagne etc... Le but de la manoeuvre étant de pouvoir modifier les noms des personnages (les différents noms sont saisie a l'inscription mais je souhaite garder les même personnages [caract, xp etc...]) et leur grade en quelques clics dans un formulaire. J'espère que j'ai bien compris ce que tu me dis... RE: Tentative de jointure - pascal - 04-07-2007 on voit les $ des variables, donc elles ne sont pas interprétées dans la requete 2 solutions : _ concaténation _ la fonction sprintf() A+ Pascal RE: Tentative de jointure - blackduty - 04-07-2007 Donc si je comprend bien, la requête interprète le nom du champ ainsi: grade_$theatre Et non, grade_europe_e (dans le cas où $theatre = europe_e). Exact ? RE: Tentative de jointure - pascal - 04-07-2007 apparemment, oui |