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 :

jointure de table et resultat [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut jointure de table et resultat
    Slt à tous,
    je me lance dans les jointure de table et cepas evident.
    J'aurais besoin de vos lumieres sur ce coup

    2 tables
    categorie
    ID C_ORDRE C_NOM

    sous-categorie
    ID SC_ORDRE SC_CAT SC_NOM

    les champs joints sont C_NOM et SC_CAT

    Ma requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     $req1 = mysql_query("SELECT cat.*, souscat.* FROM cat LEFT JOIN souscat ON
    cat.c_nom = souscat.sc_cat GROUP BY sc_cat, sc_nom ") or die("Erreur SQL1 !"); 
    while($data1 = mysql_fetch_array($req1)) {
     
    echo''.$data1['sc_cat'].'<br /> - '.$data1['sc_nom'].'<br />';
    }
    Je voudrais que l'affichage soit :
    Categorie1
    -souscategorie1
    -souscategorie2

    Categorie2
    -souscategorie1....

    Alors que la cela me met :
    Categorie1
    -souscategorie1
    Categorie1
    -souscategorie2

    Categorie2
    -souscategorie1...

    Ou est l'erreur dans mon code ?
    Merci

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 054
    Par défaut
    Bonjour,

    Ce n'est pas un problème de requête mais un problème de code PHP pour mettre en forme le résultat de la requête...
    Il te faut tester, à chaque ligne, si tu changes de catégorie par rapport à la ligne précédente ou pas.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    D'accord mais comment faire alors ???

    Il me faudrait au moins un petit bout de code pour me mettre sur la voie...

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     $req1 = mysql_query("SELECT cat.*, souscat.* FROM cat LEFT JOIN souscat ON
    cat.c_nom = souscat.sc_cat GROUP BY sc_cat, sc_nom ") or die("Erreur SQL1 !"); 
    $cat='';
    while($data1 = mysql_fetch_array($req1)) {
     if($data1['sc_cat']!=$cat)
    {
          $cat=$data1['sc_cat'];
          echo $data1['sc_cat'].'<br />';
    }
    echo '  - '.$data1['sc_nom'].'<br />';
    }
    Je crois que ça va marcher comme ça.

    Il me faudrait au moins un petit bout de code pour me mettre sur la voie...
    Si tu es nouveau en programmation, il te faut un cours d'algorithmique.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux te servir d'un tableau pour regrouper tes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     $req1 = mysql_query("SELECT cat.*, souscat.* FROM cat LEFT JOIN souscat ON
    cat.c_nom = souscat.sc_cat GROUP BY sc_cat, sc_nom ") or die("Erreur SQL1 !"); 
    while($data1 = mysql_fetch_array($req1)) {
          $tblData[$data1['sc_cat']][] = $data1['sc_nom'];
    }
     
     
    foreach ($tblData as $sc_cat=>$value) {
    echo''.$data1['sc_cat'].'<br />
       foreach ($value $as $sc_nom) {
          echo $sc_nom.'<br />';
       }
    }
    ou effectivement classer en SQL et controler quand on change de catégorie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $req1 = mysql_query("SELECT cat.*, souscat.* FROM cat LEFT JOIN souscat ON
    cat.c_nom = souscat.sc_cat GROUP BY sc_cat, sc_nom ORDER BY sc_cat") or die("Erreur SQL1 !");
    $cur_cat = '';
    while($data1 = mysql_fetch_array($req1)) {
          if ($data1['sc_cat'] != $cur_cat) {
              $cur_cat = $data1['sc_cat'];
              echo $cur_cat . '<br>';
         }
          echo $data1['sc_nom'].'<br />';
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    Ok merci beaucoup
    effectivement les deux codes fonctionnent parfaitement.

    La question etant maintenant, lequel choisir ?

    En sachant qu'il va y avoir un troisieme tables "produit".

    Peut on joindre 3 tables, si oui doit'elle avoir un champs en jointure avec les deux tables précédentes ou un seul champs avec une seule suffit ?

    Enfin Question deco : est il possible de faire afficher/masquer les sous-categories en cliquant sur leurs categories.

    Encore, Merci de votre aide

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si A joint B et que B joint C alors forcemment A joint C.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    Ok
    la finalité etant de faire un menu comme le menu de gauche
    http://www.materiel.net/ctl/Disques_durs/

    Par contre comment je pense qu'il faut passer des valeurs par l'url, non ?

  9. #9
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    C'est bon les gars
    j'ai reussi à faire ce que je voulais

    Merci à tous
    A Bientôt

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

Discussions similaires

  1. Jointure de table avec Interbase
    Par ada_b dans le forum InterBase
    Réponses: 21
    Dernier message: 12/05/2010, 19h52
  2. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 21h56
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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