Lier deux tables (clef etrangere)

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


Benefsnet
WRInaute passionné
WRInaute passionné
 
Messages: 546
Inscription: Ven Aoû 27, 2004 17:47

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 accro
WRInaute accro
 
Messages: 1500
Inscription: Lun Juil 07, 2003 13:06

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 passionné
WRInaute passionné
 
Messages: 546
Inscription: Ven Aoû 27, 2004 17:47

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: 451
Inscription: Mer Sep 01, 2004 20:10

Message le Lun Avr 03, 2006 11:17

Salut,

On pourrait voir ta requète, stp ?


Benefsnet
WRInaute passionné
WRInaute passionné
 
Messages: 546
Inscription: Ven Aoû 27, 2004 17:47

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: 451
Inscription: Mer Sep 01, 2004 20:10

Message le Lun Avr 03, 2006 21:19

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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité