0

Como criar um menu dinamico com submenus infinitos?

criado por Matheus Jordan em 23/06/2013 10:19pm
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
    e
  • ? Se alguém já tiver feito ou já passou por isso, peço que me ajudem a resolver este pepino.

    Muito obrigado a todos!

    Obs: Lembrando, não tenho código desenvolvimento mais.

    Lista de Respostas:

    0
    22/07/2016 12:15pm
    (~7 anos atrás)
    Vitor Oliveira respondeu:
    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

    Nova Resposta:

    (Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)