Автор Тема: Многоуровневое меню  (Прочитано 4944 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Inecs

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.amorphis-dg.da.ru
Многоуровневое меню
« : 15 Сентября 2005, 17:48:09 »
Народ, тут возник один вопросец, как можно организовать многоуровневое меню с неограниченным вложением? Интересует алогритм действий

Оффлайн Inecs

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.amorphis-dg.da.ru
Многоуровневое меню
« Ответ #1 : 15 Сентября 2005, 18:02:25 »
Всё понял. Решение нашлось само сабой. Всем спасибо.

Оффлайн Ivan Kolesnikov

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Многоуровневое меню
« Ответ #2 : 16 Сентября 2005, 11:08:02 »
Если задал вопрос, то ответь не него, хоть и нашел ответ сам. Другим ведь тоже интересно :)

Оффлайн Inecs

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 48
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.amorphis-dg.da.ru
Многоуровневое меню
« Ответ #3 : 16 Сентября 2005, 11:28: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 и из базы “достаются” потомки. Скажем при нажатии на “Компьютеры” вылетит меню с “Персоналки” и “КПК”. И так далее.
« Последнее редактирование: 16 Сентября 2005, 11:43:39 от Inecs »

Оффлайн Ivan Kolesnikov

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 39
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Многоуровневое меню
« Ответ #4 : 16 Сентября 2005, 11:45:15 »
Да так все просто, но вот чтобы построить такое дерево, нужно выполнить кучу запросов. Если не брать в расчет что по такой структуре, скажем oracle строит дерево автоматически, но я думаю, что тоже используется куча запросов, только на сервере.

Можно конечно получить все данные и обработать скриптом, но все равно при большом количестве - это долго.

Гораздо быстрее в плане вывода результата можно сделать используя Nested Set. Да придется повозиться с добавлением, удалением и темболее с перемещением, зато выборка будет идти намного быстрее, чем в твоем варианте.

Извиняюсь, не дочитал до конца, если не надо выводить все дерево одновременно, то твой вариант будет более оптимальным.

Оффлайн Nudlok

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cmp.h14.ru
Многоуровневое меню
« Ответ #5 : 16 Сентября 2005, 15:19:35 »
я думаю легче это сделать на яве используя CSS свойство hidden
так можно спрятять большое дерево =)

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Многоуровневое меню
« Ответ #6 : 16 Сентября 2005, 21:15:09 »
Nudlok, гениально.
Ну к чему все это, лучше бы водки выпили...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28