нужна помощь с алгоритмом построения дерева.

  • Автор темы Автор темы Marquis
  • Дата начала Дата начала

Marquis

Новичок
нужна помощь с алгоритмом построения дерева.

Есть дерево каталога и к нему нужно написать функцию строющую дерево этого каталога.
Все что строил раньше было либо навигационные строки для дерева либо польностью открытое дерево. Сейчас нужно построить дерево вроде следующей схемы:
PHP:
раздел 1 (id_1)
раздел 2 (id_2)
 |----- раздел 2.1 (id_3)
 |         |--------------- раздел 2.1.1 (id_4)
 |----- раздел 2.2 (id_5)
раздел 3 (id_6)
раздел 4 (id_7)
раздел 5 (id_8)
 |-------- раздел 5.1 (id_9)
раздел 6 (id_10)
раздел 7 (id_11)

скажем так нужно построить частично открытое дерево.

Первый вопрос который не могу решить это какие данные я должен таскать в ГЕТ'е что бы по этим данным функция могла построить дерево.

на всякий случай структура таблицы в БД:
|id|parent|name|
 
какие данные я должен таскать в ГЕТ'е что бы по этим данным функция могла построить дерево.
минимально необходимый набор данных, по которым ты можешь определить - что именно нужно отобразить
 
Во-первых нужны id открытых вершин.
Во-вторых таскать их в GET'е не надо. Я сделал AJAX'ом подгрузку, и к тому же в сессию (читай - куки) пишется эта строчка, которая представляет собой id открытых вершин через точку. И при перезагрузке страницы берется строчка уже из куки.
 
Ну в чем таскать это особо не важно я думаю, а вот за
id открытых вершин через точку
большое спасибо.

-~{}~ 17.07.06 21:19:

окей. Дальше.
определить когда запускать функцию строющую открытую ветку.
предположим в Гете есть переменная $tree равная значению "4.9" это айдишники из первого моего поста.
т.е. при отрисовке дерева если в переменной $tree есть значения менньшие чем следующий id запускаем функцию строющую дерево до этого самого элемента. Я прав?
 
информация которая может быть для тебя интересной
"NESTED SET"
http://php.russofile.ru/ru/authors/sql/nestedsets01/
 
Marquis
перегружать страницу при каждом открытии, раскрытие дерева не есть гуд
сделай на яве, а открытые узлы в куки, чтобы не терялись при перезагрузке страници
 
kos
Что нового ты написал? Помимо того что уже было в теме.
 
перегружать страницу при каждом открытии, раскрытие дерева не есть гуд
сделай на яве, а открытые узлы в куки, чтобы не терялись при перезагрузке страници
Каким образом я могу потерять открытые узлы если у меня постоянно в ГЕТе висит переменная с id'шниками вершин открытых узлов?
 
Marquis
у тебя при раскрытии дерева прегружается старица, get передаётся уже раскрытые узлы плюс растрываемый.
Если сделать на яве, то есть страница загрузилась со всей структурой дерева, а дальше скрываются, раскрываются нужные ветки без обрашения к серверу и в get твои вершины никак не попадут, если только переписывать все урл на странице
WP
AJAX имхо тут лишнее если только в дереве тыши елементов
 
kos
Садись, два. ;)
Грузить все дерево перед обращением к нему это примерно 6-7 часов при моих объемах и необходимых операциях.
Представляю юзера который ждет загрузки страницы с деревом 6-7 часов.

-~{}~ 18.07.06 21:59:

WP
Если я правильно понял по твоей схеме дерево собирается на стороне клиента ЖаваСкриптом? Какая часть дерева подгружается юзеру на компутер, дерево целиком или отдельные ветки?
 
kos
Отжиг засчитан.
Marquis
Нет, дерево собирается на стороне сервера, только то что нужно - по запросу, и передается только HTML.
 
Сверху