Menu dynamique avec foreach imbriqués
Bonjour à tous et à toutes.
Je viens vous demander de l'aide car je suis en train de remplacer mes anciennes requête sql pour passer en PDO et quand à faire je voudrais aussi améliorer mes codes.
Ci-dessous le code que j'utilise pour afficher des rubriques avec leurs onglets respectif.
Certaines rubriques on plusieurs onglets.
Pour afficher les rubriques je fait une première requête et dans le while j'ai mît une seconde requête qui affiche les onglets correspondant à la rubrique.
Ce qui me gène c'est la seconde requête qui s'exécute autant de fois qu'il y a de rubriques.
Je voudrais utiliser des foreach pour diminuer le nombres de requête mais je bloque à l'affichage des onglets.
Code:
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
| $req_menu = $bdd->query('SELECT titres_id, cat_ordre, titre_menu,auth_view FROM titres_menu_gauche WHERE auth_view = '.$level.' ORDER BY cat_ordre ASC');
echo'<ul id="menu-v">';
while ($onglet = $req_menu->fetch())
{
echo'<li><a href="#">'.stripslashes($onglet['titre_menu']).'</a>';
$req_menu2 = $bdd->query('SELECT menu_cat_id, menu_ordre, menu_name, menu_lien, num_adherent, auth_aff , id, adherent_id_createur, header
FROM onglet_menu
LEFT JOIN page_adherents ON onglet_menu.num_adherent = page_adherents.adherent_id_createur
WHERE auth_aff = '.$level.' AND menu_cat_id = '.$onglet['titres_id'].' ORDER BY menu_ordre ASC');
$nombre_s_onglet = $req_menu2->rowCount();
// Il y a des sous onglet
if ($nombre_s_onglet > 0)
{
echo'<ul class="sub">';
while ($s_onglet = $req_menu2->fetch())
{
echo'<li><a href="'.ROOTPATH.'/index.php?page=adherent&num_adh='.stripslashes($s_onglet['num_adherent']).'" title="accédez aux pages du commerce.">
'.stripslashes($s_onglet['menu_name']).'</a></li>';
}
echo'</ul>';
}
echo'</li>';
}
echo'</ul>';
$req_menu->closeCursor();
$req_menu2->closeCursor(); |
Ci-dessous mon test de nouveau code avec les foreach
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $titles = $bdd->query('SELECT titres_id, cat_ordre, titre_menu,auth_view FROM titres_menu_gauche WHERE auth_view = '.$level.' ORDER BY cat_ordre ASC');
$titles->setFetchMode(PDO::FETCH_ASSOC);
$items = $bdd->query('SELECT menu_cat_id, menu_ordre, menu_name, menu_lien, num_adherent, auth_aff FROM onglet_menu WHERE auth_aff = '.$level.' ORDER BY menu_ordre ASC');
$items->setFetchMode(PDO::FETCH_ASSOC);
foreach($titles as $row)
{
echo $row['titres_id'],$row['cat_ordre'],$row['titre_menu'], '<br/>';
foreach($items as $t) {
if ($t['menu_cat_id'] == $row['titres_id'])
{
echo $t['menu_cat_id'],$t['menu_name'],$t['menu_lien'],$t['num_adherent'], '<br/>';
}
}
} |
Quelqu'un peut il m'aider à faire cette modif ?
Merci.