Как создать навигацию по многоуровневому списку mysql php

В основном я хочу иметь возможность создавать многоуровневую навигацию (много дополнительных навигаций). Очевидно, я знаю, что это будет сделано путем создания списков друг в друге, но я довольно застрял в логике правильного отображения.

Я видел вещи, касающиеся отношений между родителями и детьми, но не могу найти ничего эффективного и легкого для понимания.

Мне не нужно знать, как строится HTML. Как php/mysql может генерировать списки.

Надеюсь, вы можете помочь.

A


person Andre    schedule 10.10.2011    source источник
comment
В чем конкретно вы ищете помощи? Структура таблицы MySQL? PHP-код? HTML-код?   -  person daiscog    schedule 10.10.2011
comment
PHP-код и запрос mysql, которые могут генерировать многоуровневую навигацию. Я уже знаю, как сделать это статически, но мне нужно знать, как создать его из базы данных.   -  person Andre    schedule 10.10.2011
comment
См. этот пост   -  person daiscog    schedule 10.10.2011


Ответы (4)


Вот код, который я использовал. Он строит неупорядоченный список с неограниченным количеством подэлементов.

/*
* Table has 3 fields: `ID`, `PARENTID` and `NAME`
* `ID` is unique, `PARENTID` showing his parent node id.
* This function will go through it and build unordered list and call itself when needed to build subitems.
* $level argument used to define wich node's subitems to build. Default is 0 which is top level.
*/

function showMenu($level = 0) {

$result = mysql_query("SELECT * FROM `tbl_structure` WHERE `PARENTID` = ".$level); 
echo "<ul>";
    while ($node = mysql_fetch_array($result)) { 
        echo "<li>".$node['NAME'];
        $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM `tbl_structure` WHERE `PARENTID` = ".$node['ID'])) != null;
        IF ($hasChild) {
            showMenu($node['ID']);
        }
        echo "</li>";
    }
echo "</ul>";
}

Надеюсь, это поможет.

person Rovshan Mamedov    schedule 07.01.2013

Я думаю, что наиболее эффективным было бы получить все записи за один раз из базы данных, а затем снова построить иерархическую структуру в php.

Таким образом, в вашей базе данных будет структура, подобная этой:

id    parent_id    menu_item

Затем вы можете получить все элементы и использовать рекурсивную функцию для создания иерархического массива, который вы можете пройти, чтобы получить свое меню, подменю, под-подменю и т. Д. Элементы. Смотрите этот вопрос и два главных ответа о том, как перестроить структуру.

person jeroen    schedule 10.10.2011

Если вы имеете в виду HTML, это так:

<ul>
   <li>
      <a href="#">Title</a>
      <ul>
         <li><a href="#">Title</a></li>
         <li><a href="#">Title</a></li>
         <li><a href="#">Title</a></li>
      </ul>
   </li>
   <li><a href="#">Title</a></li>
   <li><a href="#">Title</a></li>
   <li><a href="#">Title</a></li>
</ul>
person Friendly Code    schedule 10.10.2011

предполагая, что вы знаете, как создать заполненную содержимым таблицу mysql, предполагая, что у вас есть следующие таблицы: Юниверсы > Категории > Рынки > Сегменты

1) перечислите содержимое «Вселенных» в списке выбора. когда пользователь выбирает, вызовите другой скрипт .php и отправьте ему идентификатор выбранной вселенной (используя GET или POST)

2) перечислите содержимое «Категорий», ГДЕ idUniverses = идентификатор, который вы отправили второму сценарию.

3) то же самое для рынков...

С AJAX проще.

нужен код?

person Camille Hodoul    schedule 10.10.2011