Afficher en php les infos de plusieurs tables liées [Résolu]

Messages postés
9
Date d'inscription
dimanche 26 juillet 2009
Statut
Membre
Dernière intervention
12 novembre 2009
- - Dernière réponse : ofillion
Messages postés
9
Date d'inscription
dimanche 26 juillet 2009
Statut
Membre
Dernière intervention
12 novembre 2009
- 26 juil. 2009 à 17:47
Bonjour,

Je suis un peu novice en PHP et mySQL mais j'ai tout de même réussis à construire une base de 21 tables dans phpmyadmin et j'ai plusieurs de ces tables qui sont en relation grace au concepteur que j'ai finalement réussis à installer dans phpmyadmin.

Mon problème est le suivant et je ne sais pas si une solution existe. Je vais commencer par vous donner quelques infos sur la base.

Table "Client"
idClient (Clé primaire, num auto).
Nom du client
Prénom du client
Adresse
etc....

Table "Demandes"
idDemande (Clé primaire, num auto).
clDemandeur (Indexé et relié au champs idClient de la table client.
sujDemande
etc...

Dams ma page écrite en php, j'ai deux sections. La première contenant les données du client et la deuxième contenant une liste de ses demandes.

Ma question est la suivante : Est-ce possible d'afficher tout ceci sans devoir exécuter une requête pour le client et une deuxième requête pour la liste des demandes?? J'imagine que oui sinon, à quoi servent les relations? Je croyais qu'en faisant une requête sur le client, que je pourrais récupérer aussi les infos de ses demandes étant donné que les tables sont liées... ai-je raison?

De faire deux requête dans une page n'est pas là le problème. Mais c'est parce que j'ai 21 tables, plusieurs d'entre elles sont reliées et je vais devoir parfois afficher les données de 5 à 6 tables dans la même page alors... comment puis-je me simplifier la vie en utilisant le plein potentiel des relations entre mes tables.

Merci beaucoup à celui ou celle qui prendra quelques minutes pour me répondre.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
3
Merci
Salut,

Si j'ai bien compris ton problème, un simple INNER JOIN est nécessaire. Exemple :

SELECT Client.`Nom du client`, Client.`Prénom du client`, Demandes.sujDemande FROM Client INNER JOIN Demandes ON Client.idClient Demandes.clDemandeur WHERE idClient 42;

Si tu as besoin de quelques explications :
- "SELECT Client.`Nom du client`, Client.`Prénom du client`, Demandes.sujDemande" <- Ici on met tous les champs a sélectionner, c'est a dire ceux que l'on veux utiliser.
- "FROM Client INNER JOIN Demandes" <- Ici on indique les deux tables que l'on veux utiliser ainsi que le type de jointure (il y en a plusieurs possible).
- "ON Client.idClient = Demandes.clDemandeur" <- Ici on indique le critère sur laquelle la jonction doit se faire, on fait attention a bien dire que l'on veux que l'id du client soit le même que l'id du demandeur. Attention a ne pas oublier cette partie sinon c'est le produit cartésien des deux tables qui sera sélectionner, sur des tables un peu grosse ça met à genoux le serveur.
- "WHERE idClient = 42" <- Simple petite condition pour ne sélectionner qu'un seul client.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
9
Date d'inscription
dimanche 26 juillet 2009
Statut
Membre
Dernière intervention
12 novembre 2009
0
Merci
Merci TychoBrahe, ca marche nickel !!!
Commenter la réponse de ofillion