CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Une table avec double jointure sur une autre table

Chat-Doux
Chat-Doux
Niveau 10
09 avril 2017 à 16:55:13

Bonjour tout le monde et merci de votre aide d'avance :)

Voici mon problème :

J'ai une table "Matchs" qui va donc opposer 2 équipes "Team1" et "Team2".

Ainsi dans ma table "Match" j'ai l'ID de cette table, equipe1 contenant l'id de la team 1 et equipe2 contenant l'id de la team 2.

Mais je ne sais pas comment faire ma requète pour relier tout cela en PHP, c'est à dire que je veux afficher le nom des équipes sur ma page et pas l'id, hors le nom des équipes est présent dans la table "equipe", mais je n'arrive pas à relier les deux tables.

Je ne sais pas si je suis très clair, voici un screen rapide de ma BDD :

https://image.noelshack.com/fichiers/2017/14/1491749434-aa.png

Voici la requète que j'utilise qui me permet du coup de récupérer le nom de la team 1, mais pas de la 2 du coup, je voudrais les deux :)

SELECT * FROM matchs m JOIN equipe e ON e.id=m.equipe1 ORDER BY date DESC

Merci !

arsh222
arsh222
Niveau 10
09 avril 2017 à 17:18:27

c'est du sql plus que du php mais il suffit de faire deux jointures :
SELECT * FROM matchs INNER JOIN equipe as t1 ON matchs.equipe1 = t1.id INNER JOIN equipe as t2 ON matchs.equipe2 = t2.id ORDER BY date DESC

Chat-Doux
Chat-Doux
Niveau 10
09 avril 2017 à 17:27:18

Merci et merci de ta correction sur le langage, c'est bien vrai.

Cependant j'ai un "nouveau" problème, je fais :

$statement = $DB->query("SELECT * FROM matchs INNER JOIN equipe as t1 ON matchs.equipe1 = t1.id INNER JOIN equipe as t2 ON matchs.equipe2 = t2.id ORDER BY date DESC");

while ($données = $statement->fetch())

et ensuite j'écris mes données de la manière suivant :

echo $données['t1.nom'];
echo $données['t2.nom'];

Mais cela ne marche pas "Notice: Undefined index: t1.nom in C:\wamp64\www\projet\assets\php\match.php on line 139"

Et si je met simplement

echo $données['nom'];
echo $données['nom'];

J'obtiens évidemment 2 fois le même nom :(

Une solution :) ?

arsh222
arsh222
Niveau 10
09 avril 2017 à 19:58:15

ah oui, en fait vu que tu récupères deux fois la même table les champs ont le même nom :(
spécifie des alias pour chaque champ :

SELECT
matchs.id,
t1.nom as nom_eq1,
t2.nom as nom_eq2

FROM matchs INNER JOIN equipe as t1 ON matchs.equipe1 = t1.id INNER JOIN equipe as t2 ON matchs.equipe2 = t2.id ORDER BY date DESC

un truc qui aide aussi c'est de taper la requête directement dans phpmyadmin pour voir ce qu'elle renvoie

Je ne sais pas si il existe un truc pour faire des alias automatiquement sur tous les champs, peut-être :(

Chat-Doux
Chat-Doux
Niveau 10
09 avril 2017 à 20:54:29

Non j'ai trouvé un "moyen" j'utilise leur numéro de colonne dans le résultat de sortie et ça marche relativement bien :)

Merci de ton aide l'ami !

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment