Дерево хм....

dron4ik

Новичок
Дерево хм....

я знаю, что про деревья написано 3 милирда раз, но все пишут про хранение и т.д.
про вывод дерева пишут мало, потому что для всех это достаточно специфично и зависит от нескольких параметров (вложенность, количество детей).

я тут малюсенькую админку накатал, он нормально всегда справлялась с выводом деревьев (простейшая рекурсия).
Как устроена эта админка:
Все каталоги и подкаталоги выводяться всегда
при создании \ удалении \ переносе на другой уровень \ скрытие и т.д. дерево перегенеряется, записывается в 2 файла, первый для админки, другой для карты сервера. Всё работает достаточно шустро, даже на винде...

Час проект начал делать, там 1500 каталогов, 5-7 уровней вложенности, после создания нового раздела \ подраздела я успеваю кофе себе приготовить, это меня сильно печалит.

<strict>есть</strict> я вижу несколько вариантов решения:
1. сначала выводить только каталоги уровня "0", перед ними поставить красивые "плюсики" как в виндовом проводнике и замучать клиента, которому надо добраться до 7 уровня вложенности.

2. сделать тоже самое с ajax, чтобы клиент не сильно мучался. Но тогда другая проблема возникает, у клиента НИКОГДА не будет в адресной строке http://server.com/back/departs/?depart=111 (допустим, что раздел с таким ид имеет 7-уровень вложенности - для максимально быстрого перехода именно к этому каталогу, а не к какому-то другому.)

2.1. (извращённо-прикольный) к пункту "2" добавить кнопку "добавить в избранное" и какой-нить отдельной панелькой выводить "favorites".

Может есть полегче варианты?:)
 

Фанат

oncle terrible
Команда форума
при создании \ удалении \ переносе на другой уровень \ скрытие и т.д. дерево перегенеряется,
ужас какой.

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

dron4ik

Новичок
Уважаемый Фанат!
Я сначало засомневался в себе, что забыл, где читал про ВЫВОД дерева и метнулся уже заново перечитывать. Но потом внимательно прочитал первые 2 строчки своего поста.

я знаю, что про деревья написано 3 милирда раз, но все пишут про хранение и т.д.
про вывод дерева пишут мало

(если честно, всё что про вывод я нашёл - рекурсия) может ткнёшь носом в сЦылку, где можно почитать про ВЫВОД ДЕРЕВА без рекурсии?
 

Фанат

oncle terrible
Команда форума
гм.
Я, честно говоря, не очень понял, какой смысл в отдельном хранении дерева, без вывода. Разве второе не является прямым следствем и единственным смыслом первого?
Статейки есть в разделе "Статьи".
 

dron4ik

Новичок
есть масса способов хранения дерева

ещё раз внимательно покурил это: http://phpclub.ru/detail/article/2002-06-03 тут вот что остановило это использовать раньше:
----------------------
Конечно же, в отличие от дерева рубрик каталога, в большом форуме много сообщений. Передёргивать их всех при добавлении одного нового нет смысла.
----------------------

ещё раз покурил это:
http://phpclub.ru/faq/wakka.php?wakka=Tree/DemoPrint&v=18yt
----------------------------
Примеры, приведенные ниже, не зависят от способа хранения дерева в базе данных.

* Вывод дерева с использованием рекурсивной функции
* Вывод дерева с использованием рекурсивного шаблона
* Генерация динамического дерева
Используется динамическая дозагрузка частей дерева.
----------------------------

пришёл к выводу который сверху написал.

покурил это:
----------------------------
http://www.livejournal.com/users/demiurg/53125.html
----------------------------
опять про вывод ничего.


из нового для себя - покурил:
----------------------------
http://www.activex.net.ru/docs/phpdtree.shtml
----------------------------
Интересно, сегодня попозже повникаю, как это работает.

Дерево на скриншоте выглядит также как у меня, только у меня папочки покрасивее:)
 

Фанат

oncle terrible
Команда форума
лично я в форуме пишу в каждую запись весь путь к ней.
все дерево выводится простой сортировкой.

в какой-то из статей такой способ точно описывается.
 

dron4ik

Новичок
в этой
http://phpclub.ru/detail/article/2002-06-03

НО

тут вот что остановило использовать это раньше:
----------------------
Конечно же, в отличие от дерева рубрик каталога, в большом форуме много сообщений. Передёргивать их всех при добавлении одного нового нет смысла.
----------------------

хм.. попробовать чтоли...

Фанат, сам как дерево ВЫВОДИШЬ?
 

Фанат

oncle terrible
Команда форума
но это имеет смысл только для каталога.
а для админки вообще делается все просто - выбираются все записи, и в скрипте сортируются

-~{}~ 30.11.06 22:44:

Не понял, зачем передергивать все сообщения при добавлении одного.
Фанат, сам как дерево ВЫВОДИШЬ?
Я, кажется, написал.
все дерево выводится простой сортировкой.
 
Сверху