Maison >base de données >tutoriel mysql >Comment créer un menu arborescent en PHP/MySQL sans récursion ?
Contexte :
Construire un menu arborescent à partir de données de base de données peut être un tâche commune. Cet article explique comment construire une arborescence de menus de liste non ordonnée (UL) à partir d'un tableau PHP d'objets de page sans utiliser la récursivité.
Configuration des données :
Vos objets de page ont les attributs suivants :
Présentation des fonctions :
Nous allons créer une fonction qui prend un tableau d'objets de page et génère l'arborescence HTML UL correspondante.
Fonction d'assistance : has_children()
Cette fonction vérifie si une page a des pages enfants.
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id) return true; } return false; }</code>
Fonction récursive Build_Menu()
La fonction build_menu() parcourt le tableau et génère l'arborescence HTML UL. Il utilise une variable $parent pour garder une trace de la page parent actuelle.
<code class="php">function build_menu($rows, $parent=0) { $result = "<ul>"; foreach ($rows as $row) { if ($row['parent_id'] == $parent){ $result.= "<li>{$row['title']}"; if (has_children($rows,$row['id'])) $result.= build_menu($rows,$row['id']); $result.= "</li>"; } } $result.= "</ul>"; return $result; }</code>
Sortie :
Après avoir transmis le tableau d'objets de page au build_menu() fonction, vous pouvez faire écho à l’arborescence HTML UL résultante. Le résultat sera une structure de menu UL imbriquée représentant les données de votre base de données.
<code class="php">echo build_menu($menu);</code>
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!