Forum Webscript.Ru
Программирование => PHP => Тема начата: stanlee от 01 Июля 2004, 15:06:56
-
Народ подскажите плз а то уже запутался совсем
как сделать многоуровневую навигацию а точнее как ее вывести правильно
допусти у нас есть простейшее дерево ссылок
(номер ссылка родитель)
1 ссылка1 0
2 ссылка2 0
--3 ссылка3 2
--4 ссылка4 2
----5 ссылка5 4
----6 ссылка6 4
--7 ссылка5 2
8 ссылка8 0
9 ссылка9 0
все вроде просто но как сделать так чтобы прогнать все это уровень - в данном примере я реализовал 3 уровня
так вот как сделать так чтоб например мона было вывести сразу уровень 3
выведет
5 ссылка5 4
6 ссылка6 4
можно сделать при помощь функции которая будет по родителю выводить - но мне нужно указывать именно уровень
папример printlinks(3)
????
-
где тебе надо хранить эту навигацию ?
(массив, текстовый файл, XML, СУБД ?)
-
СУБД
тока не приводите примеры на классах - терпеть их не могу
-
Я намутил что то подобное но работает не стабильно
вот хочу у вас поспрошать может ваша идея будет интереснее
-
stanlee
для реализации моей идеи используется готовый класс (реализующий метод Nested Sets), поэтому она тебе интересна не будет
-
stanlee Напряги мозги, халявщик, это не сложно.
Если тяжело думается представь как оно должно работать, пойми алгоритм. Если тяжело представить нарисуй на бумажке, потом перепиши в код..
подскажу: рекурсия
-
Самая простая для понимания реализация и одна из самых ресурсоёмких - через parent id.
Структура таблицы:
int id, int parent_id, varchar title, ... <всё остальное, что тебе надо, типа урла>
В поле parent_id хранится id узла, родительского по отношению к текущему.
В поле parent_id корневого узла стоит ноль или минус единица - кому как больше нравится.
Из базы данных дерево формируется рекурсивно, как и подсказал Neter.
По этому принципу (с небольшими дополнениями) строится иерархия форумов во многих форумных движках, включая и этот.
-
Макс
для реализации моей идеи используется готовый класс (реализующий метод Nested Sets)
А кто мешает использовать метод Nested Sets без класса? Повязку на лоб, что бы грабли не больно били и вперед! ;)
-
Phoinix
некоторых людей проще научить пользоваться классами, чем объяснить какие запросы надо делать при добавлении/удалении/перемещении узлов (я с перемещением сам пару дней просидел, пока точные формулы вычислил)
-
во во во я с этим Nested Sets еб..ся не хочу - там гемор при перемещениях и добавлениях такой что я лучше пойду погуляю
ну вроде я что то намутил так что херьте этот топик