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

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|
 

zerkms

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

WP

^_^
Во-первых нужны id открытых вершин.
Во-вторых таскать их в GET'е не надо. Я сделал AJAX'ом подгрузку, и к тому же в сессию (читай - куки) пишется эта строчка, которая представляет собой id открытых вершин через точку. И при перезагрузке страницы берется строчка уже из куки.
 

Marquis

Новичок
Ну в чем таскать это особо не важно я думаю, а вот за
id открытых вершин через точку
большое спасибо.

-~{}~ 17.07.06 21:19:

окей. Дальше.
определить когда запускать функцию строющую открытую ветку.
предположим в Гете есть переменная $tree равная значению "4.9" это айдишники из первого моего поста.
т.е. при отрисовке дерева если в переменной $tree есть значения менньшие чем следующий id запускаем функцию строющую дерево до этого самого элемента. Я прав?
 

Franzusow

Новичок
информация которая может быть для тебя интересной
"NESTED SET"
http://php.russofile.ru/ru/authors/sql/nestedsets01/
 

kos

Новичок
Marquis
перегружать страницу при каждом открытии, раскрытие дерева не есть гуд
сделай на яве, а открытые узлы в куки, чтобы не терялись при перезагрузке страници
 

WP

^_^
kos
Что нового ты написал? Помимо того что уже было в теме.
 

Marquis

Новичок
перегружать страницу при каждом открытии, раскрытие дерева не есть гуд
сделай на яве, а открытые узлы в куки, чтобы не терялись при перезагрузке страници
Каким образом я могу потерять открытые узлы если у меня постоянно в ГЕТе висит переменная с id'шниками вершин открытых узлов?
 

kos

Новичок
Marquis
у тебя при раскрытии дерева прегружается старица, get передаётся уже раскрытые узлы плюс растрываемый.
Если сделать на яве, то есть страница загрузилась со всей структурой дерева, а дальше скрываются, раскрываются нужные ветки без обрашения к серверу и в get твои вершины никак не попадут, если только переписывать все урл на странице
WP
AJAX имхо тут лишнее если только в дереве тыши елементов
 

Marquis

Новичок
kos
Садись, два. ;)
Грузить все дерево перед обращением к нему это примерно 6-7 часов при моих объемах и необходимых операциях.
Представляю юзера который ждет загрузки страницы с деревом 6-7 часов.

-~{}~ 18.07.06 21:59:

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

WP

^_^
kos
Отжиг засчитан.
Marquis
Нет, дерево собирается на стороне сервера, только то что нужно - по запросу, и передается только HTML.
 
Сверху