|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Max Kosyakov 2:5020/400 14 Feb 2002 09:04:55 To : Timur Sabirzyanov Subject : Hам известны два способа -------------------------------------------------------------------------------- "Timur Sabirzyanov" <Timur.Sabirzyanov@p197.f197.n5080.z2.fidonet.org> wrote in message news:1013530647@p197.f197.n5080.z2.ftn... > Hello, All! > > Даже не знаю в какой эхе спрашивать, надеюсь не сильно офтопик. > > Делаю форум на перле + mysql и что-то никак не получается отрисовать дерево > сообщений. Может кто уже подобное делал? А то уже мозги кипят. Да, вот: http://forum.kosyakov.net/ > > Таблица messages(id int, parent_id int, thread int, subj char(250), msg text, Да да, такая структура вполне хороша ! > Как теперь нарисовать дерево треда ь1 ? Есть два способа: Один классический, рекурсивный. Т.е. ----------------------------------------------------------------------- sub дерево{ добавить сюды текст($id) заголовка... если есть дети у этого элемента, то{ добавить к тексту "<UL>"; для каждого ребенка добавить дерево($id); добавить к тексту "</UL>"; } } текст=дерево (корневой $id). ----------------------------------------------------------------------- Примерно так сделан forum.kosyakov.net. Однако Sirin (isirin@mail.ru) придумал более другой способ: Можно упорядочить все сообщения таким образом, что их отсортировав потом, можно было бы увидеть дерево. Для этого к id каждого сообщения добавляется (приклеевается слева) id его предка и необходимое кол-во нулей. При этом можно отследить уровень вложености каждого сообщения и задавать ему соответствующий отступ За подробностями этого алгоритма отсылаю Вас к Сирину : isirin@mail.ru или mailto:sirin@kosyakov.net Max Kosyakov(.net) --- ifmail v.2.15dev5 * Origin: ISP ElCat. Bishkek. Kyrgyzstan. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/8578af0c0945.html, оценка из 5, голосов 10
|