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

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

Répondre au sujet
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 26 juil. 2009 à 10:05
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TychoBrahe
ofillion 9 Messages postés dimanche 26 juillet 2009Date d'inscription 12 novembre 2009 Dernière intervention - 26 juil. 2009 à 17:47
0
Utile
Merci TychoBrahe, ca marche nickel !!!
Commenter la réponse de ofillion

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.