Forum Webscript.Ru
Программирование => Perl => Тема начата: Inecs от 15 Сентября 2005, 17:48:09
-
Народ, тут возник один вопросец, как можно организовать многоуровневое меню с неограниченным вложением? Интересует алогритм действий
-
Всё понял. Решение нашлось само сабой. Всем спасибо.
-
Если задал вопрос, то ответь не него, хоть и нашел ответ сам. Другим ведь тоже интересно :)
-
id parent_id title
#### ########## ###########
1 Компьютеры
2 Оргтехника
3 Мобильники
4 1 Персоналки
5 1 КПК
6 5 Rover
7 5 HP
8 5 Dell
9 7 Серия 1
10 7 Серия 2
11 7 Серия 3
12 9 Черныё
13 9 Белые
14 9 Зелёные
15 9 В крапинку
Вообщем структура базы такова.
Изначально скрипт выдаёт главные рубрики, где parent_id либо равно нулю, либо пустое.
К рубрике прикрепляется параметр вида скрипт.pl?id=id Рубрика является ссылкой по нажатии на которую передаётся параметр id и из базы “достаются” потомки. Скажем при нажатии на “Компьютеры” вылетит меню с “Персоналки” и “КПК”. И так далее.
-
Да так все просто, но вот чтобы построить такое дерево, нужно выполнить кучу запросов. Если не брать в расчет что по такой структуре, скажем oracle строит дерево автоматически, но я думаю, что тоже используется куча запросов, только на сервере.
Можно конечно получить все данные и обработать скриптом, но все равно при большом количестве - это долго.
Гораздо быстрее в плане вывода результата можно сделать используя Nested Set (http://www.webscript.ru/stories/04/09/01/8197045). Да придется повозиться с добавлением, удалением и темболее с перемещением, зато выборка будет идти намного быстрее, чем в твоем варианте.
Извиняюсь, не дочитал до конца, если не надо выводить все дерево одновременно, то твой вариант будет более оптимальным.
-
я думаю легче это сделать на яве используя CSS свойство hidden
так можно спрятять большое дерево =)
-
Nudlok, гениально.