LIEN ENTRE 2 TABLES EN PHP

Fermé
bip - 17 avril 2009 à 20:01
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 18 avril 2009 à 10:23
Bonjour,
j'ai 2 tables: Client et Devis
enfaite lorsque je rempli un form ttes les donnée sont censé s'enregistrer dans la table client et dans la table devis on enregistre un numéro unique de devis

donc 1 devis ne concerne qu'1 client (devis aura la clé etrangère numclient)

mais comment est-ce que je peu crée un lien entre ces 2 tables
cad lorsque je veu consulter un devis je veu les infos du client avec

enfaite jarrive a enregistrer les infos dans les 2 tables mais je n'arrive pas a crée une relation entre les 2 tables

jespère que vous voyé le souci

j'utilise PHP/mysql

8 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
17 avril 2009 à 20:23
Le lien entre les deux tables, c'est l'id client que tu dois ajouter dans la table devis.
0
mais comment faire avec mysql
j'ai ajouter un champ "id" dans la table devis mais après le lien jarrive pas a le faire avec la table client
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
17 avril 2009 à 23:26
Salut !

table1 : id, texte
table2 : id, texte, idtable1

SELECT table1.texte FROM table1,table2 WHERE table2.idtable1=table1.id;

Cela s'appelle une "jointure"

Cordialement,

IpIpip Ipone
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 avril 2009 à 23:27
Bsr

Mais il n'y a pas de liens à faire ! MySQL ne gèrent pas les relations entre les tables. Les autres SGBD non plus d'ailleurs. Les relations c'est toi qui les établi au travers des requêtes SQL que tu exécutes. Bien sûr tu construis tes tables en sachant quelles sont les relations qui les relient mais la base de données, elle, ne les connaît pas.

Pour lier tes tables tu peux utiliser des jointures dans une requête SQL ou encore des sous-requêtes.

Par ex pour obtenir toutes les infos du client C0001 et de ses devis tu écris une requête du genre

SELECT Client.*, Devis.* FROM Client INNER JOIN Devis ON Client.DevisID = Devis.ID WHERE Client.ID="C0001"

Devis.ID = Identifiant ou numéro du devis
Client.ID = Identifiant ou numéro du client
Client.DevisID = Identifiant ou numéro du devis (clé étrangère dans le table Client)
0
ok merci PHP
donc vu qu'1 devis ne concerne qu'1 client
je crée un champ idclient dans la table DEVIS
et je fai la jointure entre eu 2 cé ca ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 avril 2009 à 23:50
oui tu mets effectivement le numéro de client dans la table devis et pas l'inverse comme je l'ai écrit bêtement dans mon exemple T'Oh !

La logique veut qu'un client possède de 0 à N devis donc normalement la requête s'écrit

SELECT Client.*, Devis.* FROM Client INNER JOIN Devis ON Client.ID = Devis.ClientID WHERE Client.ID="C0001"

La clé étrangère c'est bien évidemment le numéro du client dans la table devis
0
ok merci ;)
je vai testé ca et j're
0
ah mais je vien de me rendre compte
comment est-ce que la clé étrangère idclient de Devis aura le idclient de devis, car dans la table client, idclient est autoincrémenter

??????????
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
18 avril 2009 à 10:23
Bjr

ça n'a aucune espèce d'importance que Client.ID soit un autoincrément !

Ca signifie seulement que lors de la création d'un nouveau client , donc d'un "INSERT INTO Client ..." MySQL va attribuer automatiquement une valeur à Client.ID
Mais ensuite le champ Client.ID est un champ comme les autres que tu peux lire

Donc lorsque tu créés un nouveau DEVIS normalement tu commences par lire le CLIENT

par ex SELECT * FROM Client WHERE Client.ID="C0001"

Et bien sûr tu conserves les infos sur le client en mémoire dans des variables PHP : tu ne peux pas utiliser le SQL pour initialiser le champ Devis.ClientID tu dois le faire par programmation !

pour faire ça tu dois connaître la langage PHP
0