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:
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