IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Gestion clé étrangère et jointure [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut Gestion clé étrangère et jointure
    Bonjour et merci de bien vouloir me venir en aide,

    Dans ma base de données MySQL, j'ai 2 tables ('membres', 'projets') dont le champ "num_membres" est une clé étrangère de 'projets'. J'ai besoin du champ "lbl_pro" de la table 'projets'.

    Après authentification d'un membre, je récupère son numéro dans une session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $reqmem = 'SELECT * FROM membres WHERE email_membres = "'. $login .'";';
    			$resultmem = mysql_query($reqmem,$connect_db);
    			$mem = mysql_fetch_assoc($resultmem);
     
    			$_SESSION['num'] = $mem['num_membres'];
    Jusque là je pense que tout va bien.

    Ensuite je veux utiliser cette variable de session pour afficher le libellé du projet affilié au membre (d'où la clé étrangère) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $reqpro = 'SELECT * 
    					FROM projets, membres 
    					WHERE membres.num_membres = projets.num_membres
    					AND num_membres = "' . $_SESSION['num'] . '";';
    					$resultpro = mysql_query($reqpro,$connect_db);
    					$pro = mysql_fetch_assoc($resultpro);
    Et j'affiche le libellé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $pro['lbl_pro']; ?>
    Cependant rien ne s'affiche ! Mais en retirant le WHERE de ma requête, le seul libellé de ma table s'affiche.
    Donc je pense que le soucis est lié au WHERE de ma requête. J'utilise pour l'instant rarement de requête avec clé étrangère je vous avoue ma confusion.

    Merci bien d'avance.

  2. #2
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut !

    Rien ne s'affiche car MySQL ne sait pas quel champ "num_membres" tu souhaites comparer à l'identifiant de la session, si c'est celui de la table projets ou celui de la table membres.
    Par ailleurs, je te déconseille fortement d'utiliser le where pour faire une jointure. Il existe une syntaxe spéciale pour cela, qui est nettement plus efficace et rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $reqpro = 'SELECT p.*, m.* 
    FROM projets AS p
    INNER JOIN membres AS m ON p.num_membres=m.num_membres
    WHERE p.num_membres = "' . $_SESSION['num'] . '" ';
    A++

  3. #3
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    pour voir si il y a une erreur SQl tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultpro = mysql_query($reqpro,$connect_db) or die(mysql_error());

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut
    @djayp : J'ai modifié mon script avec celui que tu m'as proposé, et ça fonctionne !
    Merci bien, ça va m'éviter beaucoup de prises de tête sur le reste du projet.

    @Seb33300 : merci pour le script de l'erreur SQL, il me sera utile

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [iBatis] gestion clé étrangères
    Par cyberface dans le forum Persistance des données
    Réponses: 1
    Dernier message: 08/10/2009, 09h36
  2. Gestion clé étrangère
    Par Seth77 dans le forum Access
    Réponses: 5
    Dernier message: 08/09/2006, 18h37
  3. Gestion des clés étrangères
    Par Gonelle dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 06/07/2006, 10h48
  4. Réponses: 2
    Dernier message: 31/05/2006, 17h52
  5. pb de jointure : cas ou une clé étrangère est à NULL
    Par tiboleo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/11/2004, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo