Maison > base de données > tutoriel mysql > Comment créer un menu arborescent en PHP/MySQL sans récursion ?

Comment créer un menu arborescent en PHP/MySQL sans récursion ?

Mary-Kate Olsen
Libérer: 2024-10-27 20:45:02
original
1052 Les gens l'ont consulté

How to Create a Tree Menu in PHP/MySQL Without Recursion?

Menu arborescent de construction 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 :

  • id
  • title
  • parent_id (défini sur null pour les pages racine)

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal