[RESOLU] Menu accordéon affiché dans une boucle

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Menu accordéon affiché dans une boucle

Re: Menu accordéon affiché dans une boucle

par jojolapine » 30 sept. 2013, 22:40

Bonsoir,

Il faut à moment donner récupérer les données des sous-catégories.
Une première manière de faire relativement simple serait de faire une requete récupérant toutes les sous-entrées au sein de la boucle while.
Mais cette solution est sans aucun doute un gouffre de performance, car il y aura autant de requetes que de catégories principales.

La solution adéquate est donc de faire une requete avec une jointure, afin de récupérer tout les éléments en une seule requete.

la requete ressemblerait à ceci :
SELECT
    t_sousmenu.*,
    t_menu.lienCategorie
FROM t_sousmenu
JOIN t_menu ON t_menu.idCategorie = t_sousmenu.sousCategorieId
WHERE
    t_sousmenu.afficheSousCat = 1
ORDER BY
    ordreCategorie ASC,
    ordreSousCat ASC
(+ d'infos : http://sqlpro.developpez.com/cours/sqlaz/jointures/ )

Ensuite tu pourras traiter en php le résultat afin de coller à ton attente de format html.

Bon courage :)

Menu accordéon affiché dans une boucle

par skywhi » 30 sept. 2013, 09:34

Bonjour à tous!
Dans le cadre de la création d'un petit site, je voudrais afficher un menu accordéon (avec donc des sous menus) à l'aide d'une boucle while afin que le rendu soit comme sur cette photo: http://hpics.li/470d4e9

Voici le code html de ce menu:
<div id="accordion">
<h3>Bijoux fantaisie</h3>
<div>
<p><a href="">Tous les produits It Bijoux</a></p>
<p><a href="">Tous les produits bijoux fantaisie</a></p>
<p><a href="">Nouveautés bijoux fantaisie</a></p>
<p><a href="">Promotions bijoux fantaisie</a></p>
<p><a href="">Boucles d\'oreilles bijoux fantaisie</a></p>
<p><a href="">Bagues bijoux fantaisie</a></p>
<p><a href="">Bracelets bijoux fantaisie</a></p>
<p><a href="">Colliers bijoux fantaisie</a></p>
<p><a href="">Noir et blanc bijoux fantaisie</a></p>
<p><a href="">Couleurs bijoux fantaisie</a></p>
</div>
<h3>Bijoux argent</h3>
<div>
<p><a href="">Tous les produits It bijoux</a></p>
<p><a href="">Tous les produits bijoux argent</a></p>
<p><a href="">Nouveautés bijoux argent</a></p>
<p><a href="">Promotions bijoux argent</a></p>
<p><a href="">Boucles d\'oreilles bijoux argent</a></p>
<p><a href="">Bagues bijoux argent</a></p>
<p><a href="">Bracelets bijoux argent</a></p>
<p><a href="">Colliers bijoux argent</a></p>
<p><a href="">Noir et blanc bijoux argent</a></p>
<p><a href="">Couleurs bijoux argent</a></p>
</div>
<h3>Accessoires mode</h3>
<div>
<p><a href="">Tous les produits It bijoux</a></p>
<p><a href="">Tous les accessoires mode</a></p>
<p><a href="">Nouveautés accessoires mode</a></p>
<p><a href="">Promotions accessoires mode</a></p>
<p><a href="">Boucles d\'oreilles accessoires mode</a></p>
<p><a href="">Bagues accessoires mode</a></p>
<p><a href="">Bracelets accessoires mode</a></p>
<p><a href="">Colliers accessoires mode</a></p>
<p><a href="">Noir et blanc accessoires mode</a></p>
<p><a href="">Couleurs accessoires mode</a></p>
</div>
<h3>Créateurs</h3>
<div>
<p><a href="">Tous les créateurs</a></p>
</div>
</div>
J'ai donc créé dans ma base de données 2 tables: t_menu (pour les catégories) et t_sousmenu (pour les sous catégories).
Photos ci-joint: http://hpics.li/643a436
http://hpics.li/f442850

Je parviens à afficher les catégories à l'aide de ce code mais je ne parviens pas à faire une seconde boucle dans la boucle pour qu'elle affiche les sous-catégories correspondantes aux catégories (si sousCategorieId = 1 > Bijoux fantaisie, si 2 > Bijoux argent, etc...):
echo '<div id="accordion">';
  
  $query = "SELECT *
            FROM t_menu
            WHERE afficheCategorie = 1
            ORDER BY ordreCategorie";
  $result = mysql_query($query);
              
  while ($row = mysql_fetch_array($result)){
    echo '<h3>'.$row['lienCategorie'].'</h3>
          <div></div>';  
  }
  echo'</div>';
Pouvez-vous, s'il vous plait, m'éclairer car j'avoue que je suis perdue! Merci d'avance!