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 :

Résultat d'une requette dans un menu en liste


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Résultat d'une requette dans un menu en liste
    Encore un autre problème aujourd'hui...
    je veux faire un menu qui utilise des listes et dont le contenu vient d'une Bdd
    le premier niveau affiche les catégories (table "cat") et le second affiches des dossier (table "doss") correspondant à chaque catégories.
    Du genre :
    • cat1
      [list:d1ecf3c415]doss1.1
      doss1.2
      doss1.3
    [/list:u:d1ecf3c415]
    • cat2
      [list:d1ecf3c415]doss2.1
      doss2.2
      doss2.3
    [/list:u:d1ecf3c415]
    J'ai écrit le script suivant :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?php
        //connection au serveur:
    	$cnx = mysql_connect(SERVEUR, USER, PASS, DB) ;
     
        //sÈlection de la base de donnÈes:
        $db = mysql_select_db( "metalobil" ) ;
     
        //requÍte SQL:
        $sql = "SELECT nom, titre, texte, icone
    	      FROM cat, doss
    	      WHERE cat.id_cat = doss.id_cat
    	      ORDER BY nom" ;
     
        //exÈcution de la requÍte:
        $requete = mysql_query( $sql, $cnx ) ;
     
        //affichage des donnÈes:
       while( $result = mysql_fetch_object( $requete ) )
        { 
           echo("<div id=\"nav\">\n") ;
           echo("<ul class=\"level1\">\n") ;
           echo("<li class=\"submenu\">".$result->nom."\n") ;
           		echo("<ul class=\"level2\">\n") ;
           		echo("<li class=\"submenu\">".$result->titre."</li>\n") ;
           		echo("</ul>\n") ;
           		echo("</li>\n") ;
           echo("</ul>\n") ;
        }
      ?>
    mais il me répète le premier niveau pour chaque second niveaux.
    Voici le code html qu'il génère à la sortie :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <ul class="level1">
    <li class="submenu">Architecture
    <ul class="level2">
    <li class="submenu">Arbre</li>
    </ul>
    </li>
    </ul>
    <div id="nav">
    <ul class="level1">
    <li class="submenu">Architecture
    <ul class="level2">
    <li class="submenu">avant4</li>
    </ul>
    </li>
    </ul>
    <div id="nav">
    <ul class="level1">
    <li class="submenu">Mobilier
    <ul class="level2">
    <li class="submenu">fffff</li>
    </ul>
    </li>
    </ul>
    <div id="nav">
    <ul class="level1">
    <li class="submenu">Mobilier
    <ul class="level2">
    <li class="submenu">rrrr</li>
    </ul>
    Je sais que le problème est dans l'écriture de la boucle, mais je ne maitrise pas vraiment le truc... ci quelqu'un peut m'expliquer?

  2. #2
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    C'est normal c'est écrit en clair dans ton code. Chaque fois qu'il existe une ligne dans ta base il réaffiche tout...

    Donc tu récupères dans une première boucle les catégories, puis dans cette boucle tu recrées une boucle qui cherche les dossiers "WHERE" la catégorie.

  3. #3
    Invité
    Invité(e)
    Par défaut
    j'ai essayer ça :
    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
     
     while( $result = mysql_fetch_object( $requete ) )
        { 
           echo("<div id=\"nav\">\n") ;
           echo("<ul class=\"level1\">\n") ;
           echo("<li class=\"submenu\">".$result->nom."\n") ;
           while( $result = mysql_fetch_object( $requete ) )
           {
           		echo("<ul class=\"level2\">\n") ;
           		echo("<li class=\"submenu\">".$result->titre."</li>\n") ;
           		echo("</ul>\n") ;
           		echo("</li>\n") ;
           		}
           echo("</ul>\n") ;
        }
    mais du coup il ne m'affiche qu'une seule categorie et un seul dossier ?
    Je comprends le principe, mais pas la solution ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Citation Envoyé par Anduriel
    C'est normal c'est écrit en clair dans ton code. Chaque fois qu'il existe une ligne dans ta base il réaffiche tout...

    Donc tu récupères dans une première boucle les catégories, puis dans cette boucle tu recrées une boucle qui cherche les dossiers "WHERE" la catégorie.
    Le problème, c'est que si tu as 50 catégories, cela fait en tout 51 requêtes... Alors qu'avec une jointure et un test des catégories, cela te fait... 1 requête.

Discussions similaires

  1. Affiche le résultat d'une requette SQL dans un fichier excel
    Par paterson dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 10/09/2011, 17h40
  2. [AC-2003] Afficher le résultat d'une requette SQl dans une liste
    Par pikameuh dans le forum IHM
    Réponses: 5
    Dernier message: 20/05/2011, 11h00
  3. créer une colonne dans le résultat d'une requette
    Par timal78 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/07/2007, 10h21
  4. Résultat d'une requette dans une variable
    Par kmaniche dans le forum C++Builder
    Réponses: 11
    Dernier message: 01/12/2006, 15h23
  5. creation d'une raccourcie dans le menu demarre
    Par kenshi dans le forum MFC
    Réponses: 14
    Dernier message: 11/09/2003, 14h59

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