[PHP] requêtes dûre - 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 : [PHP] requêtes dûre (/showthread.php?tid=3956) Pages :
1
2
|
[PHP] requêtes dûre - Hell-AstiK - 13-11-2010 Bonsoir, je savait pas quoi mettre dans le titre :heuuu: C'est pas si dur que ca je pense, sauf que bon, on va dire que c'est le soir, c'est bientôt l'heure de dormir, le cerveau n'est pas a fond quoi iffle: Non sérieux, ca fait deux trois jour que j'y suis dessus, et pourtant sa parait simple. Bon entrons dans le vif du sujet ! J'ai une table Liste_batiments ou comme son nom l'indique, je fait la liste des batiments, voici la structure de la table : id | nom | description bon je ne pense pas que j'ai beaucoup besoin de détailler, la description est la description du bâtiment.. Une autre table, Batiments_acquis, ou je liste les bâtiments que chaque membres a acheter, les bâtiment acquis (débloquer) donc. Cette table se présente ainsi : id | id_batiments | id_membres | niveaux id_batiments = id de la table Liste_batiments id_membres = id d'une table Membres niveaux = niveau du bâtiments Lorsque sur une page je veut afficher la liste des bâtiments, avec en fonction si le membre possède le bâtiment ou pas 'Entrer' ou 'Construire', il y a deux fois afficher la même chos, et ceci juste pour un bâtiment pas tous >.< J'arrive pas à trouver le problème, je vous montre mon code (php) :
quand je fait un var_dump($donnees_acquis['id_batiments']); à la fin du premier while, j'obtiens (int)1 et (int)2 jusque la niquel. mais quand je fait un var_dump($donnees_bloquer['id']); a la fin du second while, j'obtiens (int)1 (int)3. la ce n'est pas bon, il ne devrait pas m'afficher encore une fois le 1. Peut être une erreur dans mes requêtes ? :heuuu: Mais en tout cas je ne voit pas du tout ou. Si quelqu'un pourrez m'aider à corriger ce problème s'il vous plait.. Merci d'avance, bonne soirée à tous RE: [PHP] requêtes dûre - Myrina - 13-11-2010 Dans la première requête, il y a deux tables; il ne manquerait pas la clause where de jointure entre les deux? Sinon, la structure du code Php me laisse perplexe; pourquoi exécuter, à chaque occurrence de la première requête, la seconde requête et donc avoir le résultat que pour la dernière occurrence de la première requête donc "id différent de 2". Il serait peut être plus judicieux de stocker l'ensemble des ID dans un tableau Php avant de les injecter dans une clause NOT IN dans la seconde requête. RE: [PHP] requêtes dûre - Hell-AstiK - 13-11-2010 WHERE [...] AND BA.id_batiments = LB.id ...? Pour le tableau : $batiments_construit = array($donnees_acquis['id_batiments']); ?? et ensuite utiliser $batiments_construit dans ma seconde requête ? PS: désolé pour la déformation du forum en largeur :$ RE: [PHP] requêtes dûre - pascal - 13-11-2010 Tu peux faire une seule requête :
Le LEFT JOIN te renverra tous les batiments, liés au joueur ou sans lien avec le joueur. S'il n'y a pas de lien avec le joueur, on aura BA.niveaux = NULL (ou vide). Tu auras donc toutes les données en une seule requête A+ Pascal RE: [PHP] requêtes dûre - Hell-AstiK - 13-11-2010 (13-11-2010, 10:58 PM)pascal a écrit : Tu peux faire une seule requête : Bonsoir, merci pour cette requêtes, j'ai lu un tuto pour la comprendre, mais comment ensuite récupérer ces valeurs en php et les afficher ? si je fait echo $donnees_acquis['nom'].'<br />'; Je n'obtient que les bâtiments débloquer. (idem sous phpmyadmin) Je voudrais qu'ils s'affichent tous, si je l'ai déjà construit, il y a un lien 'Entrer', si je ne l'ai pas construit il y a un lien 'Construire'. RE: [PHP] requêtes dûre - pascal - 13-11-2010 normalement tu as tous les batiments, avec le niveau du joueur : - son niveau actuel si c'est débloqué - une chaine vide si c'est pas débloqué vérifie tes données, montre nous tes données de test. ++ Pascal RE: [PHP] requêtes dûre - Hell-AstiK - 13-11-2010 sous PHPmyadmin, si j'exécute cette requête :
j'obtiens : (ne vous fiez pas à la description ^^) J'ai tout vérifier, j'ai bien 3 id dans ma table Liste_batiments, et les id_batiments : 1 et 2 dans ma tables batiment_acquis RE: [PHP] requêtes dûre - pascal - 13-11-2010 et celle ci ?
et les données ? batiments acquis :
Liste batiments :
RE: [PHP] requêtes dûre - Hell-AstiK - 14-11-2010 ta première requêtes me retourne : La seconde : et la troisième : What else ~ ? RE: [PHP] requêtes dûre - niahoo - 14-11-2010 Marrant, le left-join marche pas... pitetre comme ça ? SELECT BA.niveaux, LB.id, LB.nom, LB.description FROM Liste_batiments LB LEFT JOIN Batiments_acquis BA ON LB.id = BA.id_batiments AND BA.id_membres =38 |