Lier deux tables (clef etrangere)


Benefsnet
WRInaute impliqué
WRInaute impliqué
 
Messages: 554
Inscription: 27 Aoû 2004

Lier deux tables (clef etrangere)

Message le Dim Avr 02, 2006 10:54

Salut,


je bosse actuellement sur un projet de site en PHP, c'est le tout début...

Je connais les bases du PHP et je me débrouille comme je peux...


Par contre j'ai un souci assez dérangeant que je n'arrive pas a résoudre :

J'ai une table "Membres" et une table "Messages" et je voudrais les lier pour que la clef primaire auto incrementé de "Membres" soit en clef étrangere pour "Messages".

Je lie donc comme ca (je crois que c'est la seule méthode...??dites moi si je me trompe) :



Code: Tout sélectionner
ALTER TABLE Messages
ADD CONSTRAINT Lien_membres_messages FOREIGN KEY (id_membres) REFERENCES Membres (id_membres)



La requete SQL est effectuée mais j'ai beau insérer des messages, la clef étrangere reste à 0...au lieu d'être identique à l'id primaire de "membres" comme souhaité...

J'ai verifier les Types des deux champs, ces sont les même...


SVP aidez moi au plus vite :cry:

spidetra
WRInaute passionné
WRInaute passionné
 
Messages: 1500
Inscription: 7 Juil 2003

Message le Dim Avr 02, 2006 11:30

La contrainte ne sert qu'à assurer l'intégrité référentielle de ta base.
Ex : tu ne pourras pas supprimmer un membre s'il possède des messages dans la table message.

Par contre c'est à toi de faire les insert dans les 2 tables message et membre, ce n'est pas le système qui le fera automatiquement.

Si tu veux que ton SGBD fasse automatiquement les insert, il faudrait créer des Triggers.
Dans ce cas précis, l'option Trigger, n'est certainement pas une bonne option. C'est à toi de gérer tes insert à la mano.


Remarque : la valeur par défaut de ton champ id_membres dans ta table message a comme par valeur par défaut 0.
Il serait préférable de mettre NULL comme valeur par défaut.


Benefsnet
WRInaute impliqué
WRInaute impliqué
 
Messages: 554
Inscription: 27 Aoû 2004

Message le Dim Avr 02, 2006 12:07

Merci pour ces précisions, reste à trouver une solution pour afficher les infos messages et infos membres (ceux ci liés pour chaques messages)


MarvinLeRouge
WRInaute impliqué
WRInaute impliqué
 
Messages: 525
Inscription: 1 Sep 2004

Message le Lun Avr 03, 2006 11:17

Salut,

On pourrait voir ta requète, stp ?


Benefsnet
WRInaute impliqué
WRInaute impliqué
 
Messages: 554
Inscription: 27 Aoû 2004

Message le Lun Avr 03, 2006 20:35

C'est bon j'ai gerer. Il suffit de mettre une requete SELECT juste aprés avoir poster le compte membre (pour récuperer l'id membre)


MarvinLeRouge
WRInaute impliqué
WRInaute impliqué
 
Messages: 525
Inscription: 1 Sep 2004

Message le Lun Avr 03, 2006 21:19

La fonction mysql_insert_id te rendra la même chose de façon plus rapide ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités