Теория графов
Categories: others, PHP on Sep.03, 2008
К примеру нужно организовать меню вот такой иерархии с бесконечным вложением подменю
Обычно делают ошибку создают несколько таблиц в базе данных и пишут заумные и очень длинные запросы. Или создавать какие-то статусы для каждого вложения, чтоб отслеживать их. Все пытаются изобретать велосипед! Мне пришлось множество велосипед повстречать и такое видал, что на голову не натянешь! :)
Самый простой метод это теория графов! Расскажу об этом методе. Возьмем табличку “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; } |
Similar posts:
May 5th, 2009 on 3:12 pm
Якщо буде дуже багато вкладених підменю – то хіба це добре – робити постійно коннекти до БД.
Чи не краще запит, який витягує всі меню і підменю винести за межі рекурсивної функції, а у функції тільки проходитись по масиву і виводити меню і підменю.
May 20th, 2009 on 9:38 pm
эта функция только выводит дерево :)