Afficher en php les infos de plusieurs tables liées

Résolu
ofillion Messages postés 9 Date d'inscription dimanche 26 juillet 2009 Statut Membre Dernière intervention 12 novembre 2009 - 26 juil. 2009 à 02:14
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.

2 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
26 juil. 2009 à 10:05
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.
3
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
Merci TychoBrahe, ca marche nickel !!!
0
Rejoignez-nous