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 :

Requête sur deux tables liées [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut Requête sur deux tables liées
    Bonjour, je bloque là, au secours svp !

    Dans Mysql j'ai :

    t_produit (id_prod, nom, couleur, prix, id_fournisseur)
    t_fournisseur(id_fournisseur, adresse, telephone)

    Une relation est créee avec une clé étrangere entre le champs id_fournisseur des deux tables.

    Voici ma question, simple :

    quelle requete dois-je utiliser pour résoudre la question suivante : donne moi le nom, la couleur, l'adresse du fournisseur et son numéro de téléphone qui correspond à l'id_prod n°3 (par exemple)

    Lors de mes essais, j'arrivais a trouver le nom et la couleur de l'id_prod n°3 mais TOUJOURS les informations du fournisseurs étaient celles du premier enregistrement de t_fournisseur

    P.S pas besoin de préciser que je suis débutant... !

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    le plus simple est de faire ça en une seule requête avec une jointure interne :
    http://sqlpro.developpez.com/cours/sqlaz/jointures/

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Merci pour ta réponse (rapide )

    J'ai deja regardé la doc, j'avais fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT id_prod, nom, couleur
    FROM   t_produit C 
           JOIN t_fournisseur T
                 ON C.id_fournisseur = T.id_fournisseur
    WHERE  id_prod = '3'

    ça fonctionne pas !

    Ca me sort les infos de t_produit mais rien de t_fournisseur

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    je viens d'utiliser left join et ça marche... même pas besoin de clé étrangere

    qui peux m'expliquer ? j'aimerais comprendre

  5. #5
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par vinze60 Voir le message
    Ca me sort les infos de t_produit mais rien de t_fournisseur
    c'est normal, dans "SELECT" tu as seulement mis des nom de colonnes de la table "produit"
    il faut garder "JOIN" (et pas de jointure externe avec LEFT JOIN) et ajouter les colonnes de la table "fournisseur" dans "SELECT"

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_prod, nom, couleur,t_fournisseur.id_fournisseur, adresse, telephone FROM t_produit,t_fournisseur WHERE t_fournisseur.id_fournisseur=t_produit.id_fournisseur AND id_prod='3'

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Ho ouai génialll !!!

    Merci !!!! Maintenant j'ai une autre petite question

    Grace a vous j'ai réussi a sortir 1 résultats et maintenant je souhaiterais isoler chacune des lignes (chacuns des 11 résultats) dans une variable.

    Par exemple mon mysql_fetch_array me sort :

    ligne1
    ligne3
    ligne4
    ligne5
    ...

    J'aimerais avoir ces valeurs dans les variables comme suit :

    $var1=ligne1
    $var2=ligne2
    $var3=ligne3

    etc,...

    Je serais super heureux si qqn1 pouvais m'aider a finir ça

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Par défaut
    Désolé pour le nom des champs du tableau mais c'est la fatigue ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    $tableau = array('valeur','autrevaleur','megatest','test','tableau','champs');
     
    foreach ( $tableau AS $key=>$value ) {
    	${"var_".$key} = $value;
    }
     
    echo $var_1.' - '.$var_4;
    ?>

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Super zeflex ! Merci beaucoup et toi aux autres !


  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Désolé Zeflex mais après avoir essayé, c'est pas trop ce que je cherchais...

    Selon ta méthode (si je comprends bien) les variable recupere les champs et non pas les lignes de mon résultat.

    En fait, ma SELECT me donne un resultat de 11 lignes (chacune ayant 3 champs)

    champs1 | Champs2 | Champs 3
    champs1 | Champs2 | Champs 3
    champs1 | Champs2 | Champs 3
    champs1 | Champs2 | Champs 3
    champs1 | Champs2 | Champs 3
    ...

    Je souhaiterais que chaque ligne soit recuperer par une variable

    $var1= champs1, champs2 et champs 3 pour la ligne 1
    $var2= champs1, champs2 et champs 3 pour la ligne 2
    $var3= champs1, champs2 et champs 3 pour la ligne 3
    $var4= champs1, champs2 et champs 3 pour la ligne 4
    ...

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    en utilisant un tableau ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $i = 1;
    while($ligne = mysql_fetch_assoc($result)
    {
    ${"var_".$i} = $ligne;
    $i++;
    }
    ou carrément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $data = array();
    while ($ligne = mysql_fetch_assoc($result)
    {
    $data[] = $ligne;
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Niarf,

    Merci beaucoup Celira mais (et désolé si j'suis lourd) je ne comprends pas comment utiliser tes codes.

    Si je prends

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $data = array();
    while ($ligne = mysql_fetch_assoc($result)
    {
    $data[] = $ligne;
    }
    et que je souhaite afficher les valeurs de ma premiere ligne je met quoi ? Est Quand je mets ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {
    echo $data2 ;
    }
    J'ai "array" qui s'affiche...

    Rhalalala, c'est la honte !

  13. #13
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $i = 0;
     
    while ( $row = mysql_fetch_array($result) ) {
         $i++;
         ${"var_".$i} = $row['champs1'].', '.$row['champs2'].', '.$row['champs3'];
    }

  14. #14
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 156
    Par défaut
    Ouiiiiiiiiiiii zeflex ! merciiiiiiiii

    Ca fonctionne, tout est nickel ! Encore merci

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

Discussions similaires

  1. [AC-2007] Requête sélection sur deux tables liées
    Par rogerfon dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 10/04/2010, 14h30
  2. Récupération du résultat d'une requête sur une table liée
    Par champijulie dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2007, 12h26
  3. Requête sur deux tables et réponses en colonnes
    Par grandoc dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/12/2006, 12h49
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06

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