LIEN ENTRE 2 TABLES EN PHP
Fermé
bip
-
17 avril 2009 à 20:01
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 18 avril 2009 à 10:23
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 18 avril 2009 à 10:23
A voir également:
- LIEN ENTRE 2 TABLES EN PHP
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verifier un lien - Guide
- Tables des matières word - Guide
- 2 ecran pc - Guide
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
17 avril 2009 à 20:23
Le lien entre les deux tables, c'est l'id client que tu dois ajouter dans la table devis.
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
j'ai ajouter un champ "id" dans la table devis mais après le lien jarrive pas a le faire avec la table client
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
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
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
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
17 avril 2009 à 23:27
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)
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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
17 avril 2009 à 23:50
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
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
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
??????????
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
??????????
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
18 avril 2009 à 10:23
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
ç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