LINUX.ORG.RU

Давайте обсудим как можно организовать приоткрытое дерево?


0

0

Hi! Давайте обсудим как можно организовать приоткрытое дерево
 наподобии как на ozon.ru (меню слева). 
Сейчас использую nested sets и класс TreeBehaviour (cake 1.2). 

Допустим есть такое дерево:

Книги (1,28) [1]
- Автомобили (2,17) [2]
---- Москвич (3,8) [5]
------ 2141 (4,5) [8]
------ 412 (6,7) [9]
---- ВАЗ (9,14) [6]
------ 2106 (10,11) [10]
------ 2109 (12,13) [11]
---- ГАЗ (15,16) [7]
- Программирование (18,25) [3]
-- PHP (19,22) [12]
---- Patterns (20,21) [14]
-- Ruby (23,24) [13]
- Цветы (26,27) [4]

В круглых скобках номера узлов (left,right), в квадратных id.

В принципе проблем сначала и не видно. Выбирай по left и right. Но...

Вот задача:
Допустим мы вычислили что сейчас пользователь находиться на 
странице про девятки "ВАЗ 2109". Id этого раздела 11, левый 
узел 12, правый 13. Выборка будет такой: все элементы у которых 
left<=12 и right >=13. Получим путь до самого верха, но туда 
не будут входить все остальные.

Получим: 2109, ВАЗ, Автомобили, Книги. 

А как получить все остальное?

P.S. Вообще может сначала с алгоритма начнем? Т.е. как вообще
 решать задачу с таким меню?
Ответ на: комментарий от coderinside

Есть много способов хранения деревьев в базе. Каждый имеет свои достоинства и недостатки. Все это уже сто раз обмусолено и разжевано. Погуглите немного: http://www.google.com/search?q=php+деревья

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.