Андрей П.
6 повідомлень
#15 років тому
Вот сижу и не могу сообразить, как сделать древовидный форум. Как писать данные и как выстроить это дерево, как данные метить, кто кому и зачем....


Пример см. на Яндекс.Фотки - комментарии к фотографиям.
Роман Беляев
16382 повідомлення
#15 років тому
Держим у сообщения идентификатор либо топика - тогда это нулевой уровень, либо идентификатор сообщения на которое оно было ответом. И все, собственно. Можно иначе.
Вадим Т.
3240 повідомлень
#15 років тому
Цитата ("papex"):
Вот сижу и не могу сообразить, как сделать древовидный форум. Как писать данные и как выстроить это дерево, как данные метить, кто кому и зачем....

Пример см. на Яндекс.Фотки - комментарии к фотографиям.

Прошу прощения, но немного не ясно.
Вас интересует именно техническая реализация? Или непонятно что-то из теории? Или что вызывает вопросы?
Пожалуйста, сформулируйте вопросы более конкретно, чтобы на них можно было бы давать конкретные же ответы.
Андрей П.
6 повідомлень
#15 років тому
Мне не понятна теоретическая часть.

Как программа поймет, какой пост за каким сдедует?
Андрей П.
6 повідомлень
#15 років тому
Цитата ("frig"):
Держим у сообщения идентификатор либо топика - тогда это нулевой уровень, либо идентификатор сообщения на которое оно было ответом. И все, собственно. Можно иначе.


не понятно. А как их выводить в правильном порядке?
Александр Ж.
575 повідомлень
#15 років тому
А на дату посмотреть же можно
Sum М.
48 повідомлень
#15 років тому
Все на самом деле просто.
для этого нам необходимо представить структуру например организации федеральных округов и субъектов федерации например России
где:

ID PARENT_ID S_NAME
0 Россия
1 0 Уральский ФО
2 1 Свердловская Область
3 1 Курганская область


И так, подведм итог, для организации древовидного форума, необходимо создать базу данных с двумя полями в таблице для имен топиков
ID - общий идентификатор (primary key)
PARENT_ID - идентификатор вложенности

для организации порядка следования можно добавить поле N_ORDER и потом сортировать по нему при написании запроса.
Роман Беляев
16382 повідомлення
#15 років тому
Цитата ("papex"):
не понятно. А как их выводить в правильном порядке?


Выбираем все сообщения у которых стоит идентификатор поста и родитель 0. При переборе сообщений делаем следующее. При каждом сообщении выбираем сообщения у которых в поле родителя стоит идентификатор текущего. Тут рекурсивно надо выбирать. Вообще это типичный пример рекурсии, мне кажется, что даже в примерах при описании рекурсии его приводят.

Можно привести пример, но это довольно длинно. :-)
Андрей П.
6 повідомлень
#15 років тому
frig, Sum,
Видимо, я туплю. Старею... )))

1.0
- 1.1
--1.1.1
---1.1.1.1
--1.1.2
---1.1.1.1
-1.2
--1.2.1
-1.3
2.0
-2.1

и т.д. Вот как же это в базу записать а потом разобрать?
Роман Беляев
16382 повідомлення
#15 років тому
Тогда попробуем вот так. первая цифра - номер поста, вторая - номер родителя


1 0
2 0
-3 2
--4 3
-5 3
--6 5
---7 6
8 0
-9 8
10 0

Отступом показал кто к чему относится. отступом не получилось. сейчас.
Андрей П.
6 повідомлень
#15 років тому
Тогда получается, что я должен к базе обращатьмся много-много раз?
Роман Беляев
16382 повідомлення
#15 років тому
Можно так, а лучше просто грузить все отзывы к топику, а потом перебирать в массиве. Тогда один запрос, пара циклов и все.
Владимир А.
246 повідомлень
#15 років тому
Оффтопик
О, родной Курган случайно всплыл


а по сабжу:

не, много-много раз не надо. Можно ввести не только принадлежность поста родителю, но хранить отдельно "ключевые" посты, которые есть начало темы. Тогда у всех "внутри темы" будет одинаковое это значение, но разные родители, чтобы построить дерево.