Afficher des données provenant de 2 tables

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par helpclic, 5 Avril 2008.

  1. helpclic

    helpclic Nouveau WRInaute

    Inscrit:
    10 Mars 2007
    Messages:
    22
    J'aime reçus:
    0
    Bonjour à tous,

    Voila, je souhaiterais afficher des données provenant de 2 tables. Par exemple, j'ai 2 tables MySQL. (table categorie et table sous_categorie).
    Composition table marque
    id_cat type int
    designation type varchar 50
    ...
    Cette table est composé des éléments suivant :
    1 - Thomson
    2 - LG
    ...
    Composition table Produit
    id_scat type int
    idcat type int (identifiant table categorie)
    designation type varchar 50
    ...
    Cette table est composé des éléments suivant
    1 - 1(Thomson) - Réfrigérateur
    2 - 1(Thomson) - Lave Linge
    3 - 2(LG) - Téléphone
    4 - 2(LG) - Télévision
    5 - 2(LG) - HI-FI
    ...
    Je voudrais afficher des éléments qui viennent des 2 tables c'est-à-dire la designation de la table Marque et pour cette designation, je voudrais afficher les designation de la table Produit qui correspondent à la designation de la Marque:
    Bon en exemple (je voudrais que ca m'affiche cela) :
    Marque Thomson : Réfrigérateur - Lave Linge
    Marque LG : Téléphone - Télévision - HI-FI

    Pour le moment, ca m'affiche :
    1 - Réfrigérateur - Lave Linge
    2 -Téléphone - Télévision - HI-FI
    Et c'est normal car je sais afficher les données provenant d'une table mais pas de deux. Voila le code :
    Code:
    <?php include ('configuration.php'); ?><!-- connexion bd --> 
    <?php 
    $reponse = mysql_query ("SELECT * FROM Produit"); 
    while ($donnees = mysql_fetch_array($reponse)) 
    { 
    ?> 
    <?php echo $donnees['idcat'];?> : <?php echo $donnees['designation'];?><br> 
    <?php 
    } 
    mysql_close(); 
    ?> 
    
    En somme, je voudrai que s'affiche par marque tous les produits, les uns a la suite des autres.
    Je pense que ca doit être facile mais je ne trouve pas la solution. Pouvez-vous m'aider ?[/code]
     
  2. Nixo

    Nixo WRInaute discret

    Inscrit:
    9 Juillet 2004
    Messages:
    76
    J'aime reçus:
    0
    Essai ce genre de requête:

    SELECT * FROM marque, produit WHERE marque.id_cat=produit.idcat GROUP BY marque.id_cat

    Test déjà la requête mysql dans phpmyadmin pour voir si ce sont bien les infos que tu désires :)
     
  3. KOogar

    KOogar WRInaute accro

    Inscrit:
    16 Novembre 2004
    Messages:
    4 552
    J'aime reçus:
    0
    Avec :

    Composition table marque
    id_cat type int
    designation_marque type varchar 50
    ...

    Produit
    id_scat type int
    idcat type int (identifiant table categorie)
    designation_produit type varchar 50

    Code:
    "SELECT a.designation_marque, b.designation_produit FROM marque a, Produit b WHERE a.id_cat=b.id_scat";
     
  4. helpclic

    helpclic Nouveau WRInaute

    Inscrit:
    10 Mars 2007
    Messages:
    22
    J'aime reçus:
    0
    Bonjour,

    Que ce soit la première solution ou la deuxième tout fonctionne par contre ca m'affiche tous les marques et tous les produits. C'est-à-dire que ca me répéte les marques pour les produits.
    En somme, si je reprend l'exemple précédent :
    Marque : Thomson
    Produit : Réfrigérateur
    Marque : Thomson
    Produit : Lave-linge
    Marque : LG
    Produit : Téléphone
    ...
    Moi je voudrai que tous les produits s'affiche pour une marque. Je voudrai en gros :
    Marque: Thomson
    Produit : Réfrigérateur - Lave-linge
    Marque : LG
    Produit : Téléphone ...
    Je voudrai afficher une fois la marque et tous les produits de la marque. Pour le moment, ca me répéte la marque alors que je voudrais qu'elle s'affiche qu'une fois.
    J'ai essayé avec la commande DISTINCT mais ce ne me fait pas avancé le schmilblick ...
     
  5. Bacteries

    Bacteries WRInaute passionné

    Inscrit:
    27 Mai 2004
    Messages:
    1 366
    J'aime reçus:
    0
    Bah là à toi de gérer l'affichage en PHP...