Maison > base de données > tutoriel mysql > Comment créer efficacement des menus arborescents en PHP et MySQL avec une seule requête ?

Comment créer efficacement des menus arborescents en PHP et MySQL avec une seule requête ?

DDD
Libérer: 2024-10-28 03:17:31
original
685 Les gens l'ont consulté

How to Efficiently Build Tree Menus in PHP and MySQL with a Single Query?

Création de menus arborescents en PHP et MySQL

Lorsque vous essayez de construire des arborescences de menus de liste non ordonnées à partir d'une base de données MySQL en PHP, l'efficacité des performances est cruciale . Pour y parvenir, une seule requête de base de données peut être utilisée et la récursion peut être évitée.

Solution :

La fonction PHP suivante prend un tableau d'objets de page en entrée, dont chacun contient un identifiant, un titre et des attributs d'identifiant parent. Il génère de manière récursive la structure de la liste HTML en parcourant les objets.

<code class="php">function build_menu($objects, $parent = 0) {
  $result  = "<ul>";

  foreach ($objects as $object) {
    if ($object['parent_id'] == $parent) {
      $result .= "<li>{$object['title']}";

      if (has_children($objects, $object['id'])) {
        $result .= build_menu($objects, $object['id']);
      }

      $result .= "</li>";
    }
  }

  $result .= "</ul>";
  return $result;
}</code>
Copier après la connexion

Utilisation :

Pour utiliser la fonction, un tableau d'objets de page peut être récupéré de la base de données et transmis comme arguments. La fonction renverra une structure de liste HTML formatée représentant l'arborescence du menu.

<code class="php">$page_objects = get_page_objects_from_database();
$menu_html = build_menu($page_objects);</code>
Copier après la connexion

Efficacité améliorée :

Pour une efficacité optimale, il est recommandé de commander les résultats en utilisant une requête SQL. Cela garantit que les objets sont traités dans une séquence logique, minimisant les comparaisons et les itérations inutiles. De plus, une colonne de poids ou de séquence dans le schéma de la base de données peut aider à organiser l'arborescence du menu.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal