Maison  >  Article  >  base de données  >  Comment créer des menus hiérarchiques avec une profondeur illimitée en PHP et MySQL ?

Comment créer des menus hiérarchiques avec une profondeur illimitée en PHP et MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 22:20:02676parcourir

How to Build Hierarchical Menus With Unlimited Depth in PHP and MySQL?

Création de menus hiérarchiques avec une profondeur illimitée

Dans ce guide, nous explorerons comment créer des menus imbriqués avec un nombre illimité de niveaux en utilisant PHP et MySQL.

Structure de la base de données

Nous utiliserons une structure de base de données dans laquelle chaque élément de menu a un "id", un "parent_id" et un "title". Le champ "parent_id" stocke l'ID du parent de l'élément de menu, avec "0" indiquant un menu de niveau supérieur.

Récupération des sous-menus

Pour récupérer les sous-menus d'un menu parent, nous pouvons utiliser le code suivant :

<code class="php"><?php
$list = $obj->childmenu($parentid); 

foreach($list as $menu) {
    extract($menu);
    echo '<li><a href="#">'.$name.'</a></li>';
}
?></code>

Vérification des sous-menus enfants

Pour vérifier si un menu a des sous-menus enfants, nous pouvons modifier le code ci-dessus comme suit :

<code class="php"><?php
$list = $obj->childmenu($parentid); 

foreach($list as $menu) {
    extract($menu);
    if (count($obj->childmenu($id)) > 0) {
        echo '<li><a href="#">'.$name.'</a><ul class="submenu">';
        $list2 = $obj->childmenu($id); 
        foreach($list2 as $menu2) {
            extract($menu2);
            echo '<li><a href="#">'.$name.'</a></li>';
        }
        echo '</ul>
        </li>';
    } else {
        echo '<li><a href="#">'.$name.'</a></li>';
    }
}
?></code>

Ce code utilise une boucle imbriquée pour récupérer et afficher les sous-menus, garantissant que tous les niveaux de la hiérarchie sont capturés. Le résultat sera une structure HTML imbriquée avec des éléments de menu et leurs sous-menus correspondants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn