"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Construisez un menu de niveau infini avec PHP et MySQL: Solution récursive

Construisez un menu de niveau infini avec PHP et MySQL: Solution récursive

Publié le 2025-04-22
Parcourir:919

How to Build Unlimited-Level Menus with PHP and MySQL: A Recursive Solution?

Construire des menus de niveau illimité avec PHP et MySql

pour créer des menus complexes avec plusieurs niveaux et un sous-ménus, une approche commune implique l'utilisation d'une structure de base de données pour organiser des éléments de menu. Dans de telles structures, les menus de niveau supérieur ont généralement un ID parent de 0, tandis que les sous-menus se voient attribuer l'ID de leur menu parent.

Un défi survient lorsque vous avez besoin de vérifier le sous-diminue récursivement et de les afficher dans leurs éléments de liste respectifs. Voici comment accomplir cela à l'aide de php et mysql:

MySql Query:

SELECT id, parent_id, name, link, position
FROM menu_item
ORDER BY parent_id, position;

Cette requête récupère tous les éléments de menu dans un ordre hiérarchique basé sur leurs relations parent-enfant.

Php Implementation:

$html = '';
$parent = 0; // Starting with the top-level menu
$parent_stack = array(); // Keeps track of parent menu IDs

// Map menu items by their parent ID
$children = array();
foreach ($items as $item) {
    $children[$item['parent_id']][] = $item;
}

while (
    // If there are more children at the current parent level
    ($option = each($children[$parent])) ||
    // Or if we need to backtrack to a previous parent level
    ($parent > 0)
) {
    if (!empty($option)) {
        // Handle menu items with children
        if (!empty($children[$option['value']['id']])) {
            $html .= '
  • ' . $option['value']['name'] . '
  • '; $html .= ''; $parent = array_pop($parent_stack); // Pop the last parent ID from the stack } } // Output the resulting HTML echo $html;

    Explication:

    1. Le code php crée une pile pour garder une trace des boucles de menu parent ($ parent_stack). La fin de la chaîne de sortie HTML avec un
        imbriqué pour son sous-menu.
    2. L'ID parent actuel est poussé sur la pile, et le parent actuel est défini sur l'ID de l'élément de menu actuel. La pile n'est pas vide, le parent actuel est sorti de la pile, et le parent actuel est défini sur l'ID apparné.
    3. La boucle continue jusqu'à ce que tous les éléments de menu aient été traités.
    Dernier tutoriel Plus>

    Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

    Copyright© 2022 湘ICP备2022001581号-3