К примеру нужно организовать меню вот такой иерархии с бесконечным вложением подменю

Теория графов

Обычно делают ошибку создают несколько таблиц в базе данных и пишут заумные и очень длинные запросы. Или создавать какие-то статусы для каждого вложения, чтоб отслеживать их. Все пытаются изобретать велосипед! Мне пришлось множество велосипед повстречать и такое видал, что на голову не натянешь! :)

Самый простой метод это теория графов! Расскажу об этом методе. Возьмем табличку “dropdown_menu” в виде примера :

База данных

Рисунок который объясняет построение данной иерархии:

Граф

Пример отображения данной реализации:

1
2
3
4
5
6
7
8
9
10
11
function show_menu($id = 0, $tree = '')
{
$query = mysql_query('SELECT * FROM dropdown_menu WHERE paren_id='.$id);

while ($menu = mysql_fetch_array($query)){
$echo = $tree.$menu['name_fr'].' / '.$menu['name_ru'].'<br/>';
show_menu( $menu['id'], $tree.'   ' );  //Функция вызывает саму
}                                                     // себя для построения иерархии дерева
//  и добавляются дополнительные пробелы
return $echo;
}