construindo menus de nível ilimitado com php e mysql
para criar menus complexos com vários níveis e submenus, uma abordagem comum envolve a utilização de uma estrutura de dados para organizar itens de menu. Nessas estruturas, os menus de nível superior normalmente têm um identificador pai de 0, enquanto os submenus recebem o ID do menu pai. Veja como fazer isso usando o php e o mysql:
mysql query:
selecione id, parent_id, nome, link, posição, posição, posição De menus_item Ordem por parent_id, posicionar;
SELECT id, parent_id, name, link, position FROM menu_item ORDER BY parent_id, position;
explicação:
O código php cria uma pilha para acompanhar os identificações do menu e os itens do menu ($ parent_stack).
$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;
O ID do pai atual é empurrado para a pilha, e o pai atual é definido para o ID do item de menu atual. Se a pilha não estiver vazia, o pai atual será retirado da pilha e o pai atual é definido como o ID do estouro. o loop continua até que todos os itens de menu tenham sido processados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3