Como criar um menu dinamico com submenus infinitos?
Boas meus amigos,
Sou novo no fórum e estou tentando criar um menu com vários filhos. Cheguei a criar um código (com erro), mas o perdi e cansei depois de inúmeras tentativas e decidi vim até vocês.
O menu será dinâmico vindo do banco de dados MySQL. A tabela menu contém os seguintes campos.
Quote
- ID_MENU;
- menu_parent; (onde ficará o ID do menu pai)
- menu_titulo;
- menu_link;
O menu_parent ficará salvo a ID do menu pai. Só que o menu poderá ter vários submenus um dentro do outro, por exemplo:
MENU
SUBMENU
SUBMENU2
SUBMENU3
e assim por diante
MENU2
SUBMENU
MENU3
MENU4
MENU3
MENU4
E assim segue de acordo com o modo que será criado o menu.
Como posso mostrar esse menu dentro das tags
Muito obrigado a todos!
Obs: Lembrando, não tenho código desenvolvimento mais.
Sou novo no fórum e estou tentando criar um menu com vários filhos. Cheguei a criar um código (com erro), mas o perdi e cansei depois de inúmeras tentativas e decidi vim até vocês.
O menu será dinâmico vindo do banco de dados MySQL. A tabela menu contém os seguintes campos.
Quote
- ID_MENU;
- menu_parent; (onde ficará o ID do menu pai)
- menu_titulo;
- menu_link;
O menu_parent ficará salvo a ID do menu pai. Só que o menu poderá ter vários submenus um dentro do outro, por exemplo:
MENU
SUBMENU
SUBMENU2
SUBMENU3
e assim por diante
MENU2
SUBMENU
MENU3
MENU4
MENU3
MENU4
E assim segue de acordo com o modo que será criado o menu.
Como posso mostrar esse menu dentro das tags
Muito obrigado a todos!
Obs: Lembrando, não tenho código desenvolvimento mais.
comentários (0)
suspender
Lista de Respostas:
22/07/2016 12:15pm
(~8 anos atrás)
(~8 anos atrás)
Talvez isso possa lhe ajudar:
<?php
$items = array(
array(
'id' => 10,
'parent' => 0,
'name' => 'Top Page 1',
'link' => 'top_page_1',
'target' => '_self'
),
array(
'id' => 12,
'parent' => 0,
'name' => 'Top Page 2',
'link' => 'top_page_2',
'target' => '_self'
),
array(
'id' => 25,
'parent' => 10,
'name' => 'Sub Page 1 of top page 1',
'link' => 'sub_page_1_of_top_page_1',
'target' => '_self'
),
array(
'id' => 26,
'parent' => 12,
'name' => 'Sub Page 1 of top page 2',
'link' => 'sub_page_1_of_top_page_2',
'target' => '_self'
),
array(
'id' => 28,
'parent' => 26,
'name' => 'Sub Page of sub page 1 of top page 2',
'link' => 'sub_page_of_sub_page_1_of_top_page_2',
'target' => '_self'
)
);
function array_process_for_ids($items) {
$new_array = array();
foreach ($items as $item) {
$new_array[$item['id']] = $item;
}
return $new_array;
}
function menu($items) {
function menu_recursive($parent_item) {
global $items;
unset($items[$parent_item['id']]);
echo '<div style="padding-left: 15px;">';
echo '- '.$parent_item['name'];
foreach ($items as $item) {
if ($item['parent'] == $parent_item['id']) {
menu_recursive($item);
}
}
echo '</div>';
}
foreach ($items as $item) {
if ($item['parent'] == 0) menu_recursive($item);
}
}
$items = array_process_for_ids($items);
menu($items);
?>
Retirado de : http://phpfiddle.org/main/code/pmw-7i3
<?php
$items = array(
array(
'id' => 10,
'parent' => 0,
'name' => 'Top Page 1',
'link' => 'top_page_1',
'target' => '_self'
),
array(
'id' => 12,
'parent' => 0,
'name' => 'Top Page 2',
'link' => 'top_page_2',
'target' => '_self'
),
array(
'id' => 25,
'parent' => 10,
'name' => 'Sub Page 1 of top page 1',
'link' => 'sub_page_1_of_top_page_1',
'target' => '_self'
),
array(
'id' => 26,
'parent' => 12,
'name' => 'Sub Page 1 of top page 2',
'link' => 'sub_page_1_of_top_page_2',
'target' => '_self'
),
array(
'id' => 28,
'parent' => 26,
'name' => 'Sub Page of sub page 1 of top page 2',
'link' => 'sub_page_of_sub_page_1_of_top_page_2',
'target' => '_self'
)
);
function array_process_for_ids($items) {
$new_array = array();
foreach ($items as $item) {
$new_array[$item['id']] = $item;
}
return $new_array;
}
function menu($items) {
function menu_recursive($parent_item) {
global $items;
unset($items[$parent_item['id']]);
echo '<div style="padding-left: 15px;">';
echo '- '.$parent_item['name'];
foreach ($items as $item) {
if ($item['parent'] == $parent_item['id']) {
menu_recursive($item);
}
}
echo '</div>';
}
foreach ($items as $item) {
if ($item['parent'] == 0) menu_recursive($item);
}
}
$items = array_process_for_ids($items);
menu($items);
?>
Retirado de : http://phpfiddle.org/main/code/pmw-7i3