Forum Webscript.Ru

Программирование => PHP => Тема начата: stanlee от 01 Июля 2004, 15:06:56

Название: многоуровневая навигация
Отправлено: 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)

????
Название: многоуровневая навигация
Отправлено: Макс от 01 Июля 2004, 16:05:25
где тебе надо хранить эту навигацию ?
(массив, текстовый файл, XML, СУБД ?)
Название: многоуровневая навигация
Отправлено: stanlee от 01 Июля 2004, 16:09:09
СУБД

тока не приводите примеры на классах - терпеть их не могу
Название: многоуровневая навигация
Отправлено: stanlee от 01 Июля 2004, 16:29:18
Я намутил что то подобное но работает не стабильно
вот хочу у вас поспрошать может ваша идея будет интереснее
Название: многоуровневая навигация
Отправлено: Макс от 01 Июля 2004, 17:49:24
stanlee
для реализации моей идеи используется готовый класс (реализующий метод Nested Sets), поэтому она тебе интересна не будет
Название: многоуровневая навигация
Отправлено: Neter от 01 Июля 2004, 20:00:12
stanlee Напряги мозги, халявщик, это не сложно.
Если тяжело думается представь как оно должно работать, пойми алгоритм. Если тяжело представить нарисуй на бумажке, потом перепиши в код..

подскажу: рекурсия
Название: многоуровневая навигация
Отправлено: FreeSpace от 01 Июля 2004, 22:14:34
Самая простая для понимания реализация и одна из самых ресурсоёмких - через parent id.
Структура таблицы:
int id, int parent_id, varchar title, ... <всё остальное, что тебе надо, типа урла>
В поле parent_id хранится id узла, родительского по отношению к текущему.
В поле parent_id корневого узла стоит ноль или минус единица - кому как больше нравится.
Из базы данных дерево формируется рекурсивно, как и подсказал Neter.
По этому принципу (с небольшими дополнениями) строится иерархия форумов во многих форумных движках, включая и этот.
Название: многоуровневая навигация
Отправлено: Phoinix от 02 Июля 2004, 11:31:53
Макс
Цитировать
для реализации моей идеи используется готовый класс (реализующий метод Nested Sets)


А кто мешает использовать метод Nested Sets без класса? Повязку на лоб, что бы грабли не больно били и вперед! ;)
Название: многоуровневая навигация
Отправлено: Макс от 02 Июля 2004, 12:09:18
Phoinix
некоторых людей проще научить пользоваться классами, чем объяснить какие запросы надо делать при добавлении/удалении/перемещении узлов (я с перемещением сам пару дней просидел, пока точные формулы вычислил)
Название: многоуровневая навигация
Отправлено: stanlee от 02 Июля 2004, 14:15:53
во во во я с этим Nested Sets еб..ся не хочу - там гемор при перемещениях и добавлениях такой что я лучше пойду погуляю
ну вроде я что то намутил так что херьте этот топик