LIEN ENTRE 2 TABLES EN PHP
bip
-
PhP Messages postés 1770 Date d'inscription Statut Membre Dernière intervention -
PhP Messages postés 1770 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- LIEN ENTRE 2 TABLES EN PHP
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Verificateur de lien - Guide
- Tables des matières word - Guide
8 réponses
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
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
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
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
??????????
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