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

Langage PHP Discussion :

Plusieurs clefs étrangere ? ou Focntion explode ?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Plusieurs clefs étrangere ? ou Focntion explode ?
    Bonjour,

    J'ai une table client et une table catégorie.
    La table catégorie contient 2 colonnes : id_categorie et nom_categorie
    La table client contient de nombreuses colonnes dont une nommée cat_client : elle fait directement référence à la table catégorie.
    Un client peut appartenir à plusieurs catégorie. Ainsi la valeur du champs cat_client devrait ressembler à cela : 1,3,6 (le client appartient à la fois à la catégorie 1, 3 et 6)

    Je cherche à faire la chose suivante
    Objectif : créer une liste de client avec les infos les concernants.
    (exemple :
    Robert Dupont nomcat nomcat2 nomcat 3
    Marie Machin nomcat3
    Pierre Dupré nomcat1 nomcat 3
    José Machin nomcat2 nomcat5 nomcat 20)

    résultat attendu avec les tables ci dessous :
    (résultat attendus ici :
    Pierre Liliputiens Nains Vert Bruns Pauvres
    Paul Lion
    Jean Bruns Riches
    Roger Vert )

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = "SELECT * FROM client, categorie
    WHERE categorie.id_categorie = client.cat_client";
     
    $result = $mysqli->query($sql);
     
    if ($result->num_rows > 0)
    {
    while($row = $result->fetch_assoc())
    {
    echo ''.$row["nom_client"].' - '.$row["prenom_client"].' - '.$row["nom_categorie"].'';
    }
    }

    Nom : Sans titre-1.jpg
Affichages : 155
Taille : 35,1 Ko
    Nom : Sans titre-2.jpg
Affichages : 170
Taille : 49,8 Ko

    Voici mon code, mais inutile de dire que je n'arrive pas à afficher le nom des différentes cat correspondantes...
    est ce que quelqu'un pourrait m'aide ?
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    en gardant cette structure vous aurez besoin de 2 boucles de ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $requete = "liste des clients";
     
    (boucle pour parcourir la liste des clients) {
     
    	afficher le nom du client
     
    	$requete2 = "liste des catégories de ce client";
     
    	(boucle pour parcourir les catégories) {
     
    		afficher le nom de la catégorie
     
    	}
     
     
    }



    une autre solution pour faire cette relation (un client qui peut être associé à plusieurs catégories et d'une catégorie associée à plusieurs client) serait de créer une table "categorieclient" avec 2 champs qui serait la clé primaire ensemble et qui contiendrait cela avec votre exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    id_client    id_categorie
    1            11
    1            12
    1            17
    1            23
    1            24
    2            21
    3            23
    3            25
    à partir de cette structure vous pouvez récupérer les noms des catégories comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT client.id_client, categorie.*
    FROM client
    INNER JOIN clientcategorie
        ON clientcategorie.id_client = client.id_client
    INNER JOIN categorie
        ON categorie.id_categorie = clientcategorie.id_categorie

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci Mathieu,

    Votre réponse semble en effet être judicieuse et je pense que je vais me tourner vers cela !

Discussions similaires

  1. [MySQL] table de liaison & clef étrangere
    Par cotojo12 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 20/01/2010, 09h15
  2. Clef étrangere entre deux MCD
    Par rvzip64 dans le forum PowerAMC
    Réponses: 0
    Dernier message: 03/11/2009, 09h59
  3. Un tableau avec plusieurs clef de même valeurs
    Par singleProject dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/10/2008, 10h54
  4. Réponses: 3
    Dernier message: 31/03/2008, 15h13
  5. clef primaire formées de plusieurs clefs
    Par jp31810 dans le forum Oracle
    Réponses: 2
    Dernier message: 06/09/2007, 12h24

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