Как создать mysql php многоуровневую навигацию по списку - PullRequest
0 голосов
/ 10 октября 2011

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

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

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

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

A

Ответы [ 4 ]

2 голосов
/ 07 января 2013

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

/*
* 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>";
}

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

1 голос
/ 10 октября 2011

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

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

id    parent_id    menu_item

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

0 голосов
/ 10 октября 2011

при условии, что вы знаете, как создать заполненный содержимым таблицы MySQL при условии, что у вас есть следующие таблицы: юниверсы> категории> рынки> сегменты

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

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

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

С AJAX все проще.

нужен код?

0 голосов
/ 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>
...