parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Нет, я строю как всегда по своему. Коряво, но "мое" :)

greg.frolov 15.06.2002 23:41

Написать сею короткую заметку меня "соподвигли" еще не завершившиеся дебаты по поводу построения деревьев различными средствами. На ваш суд предлагаю свой метод, не очень правильный, не очень удобный и не очень красивый, можно даже сказать "корявый", но, т.к. это дело работает, то не воспринимать "это", как решение нельзя, я думаю :)

Итак:
Задача решалась в два этапа (как нам и рекомендовал товаричщ Миша на старом форуме). Первый - выбираем все темы, где
level=0
, затем обрабатываем то, что выбрали и выводим окончательный вариант. Вот, совершенно немного почитав, (но, к своему стыду, не до конца и не вдумчиво) статью нашего идейного вдохновителя :), можно сделать следующий вывод:
Далеко не всякие сервера баз данных умеют делать это. В частности наиболее популярный из-за того, что он бесплатный, MySQL не умеет делать этого.
Да, древо из MySQL достать сложновато, тем более с нашими корявыми руками :) Но где наша не пропадала...
$forum[^table::sql{select parent from table where level=0 order by published DESC}]
$select[^forum.menu{$forum.parent;,}]
$zzz[^table::sql{select * from table where parent in($select) order by parent DESC, id ASC}]
Замечания
id - вставляется автоинкрементом, поэтому нет нужды сортировать по дате - чем больше id, тем "старше сообщение". Конечно, это подходит только для "элементарных" решений и для серьезных BOARDов с супер-возможностями никуда не годится. Но чем дальше юзаешь, тем больше приходишь к выводу, что чем проще - тем лучше... Мне вот лично пришлось повымудряться с настройками для того, чтобы "уважить" всех постояльцев форума. Но лишнего ничего прикручивать не собираюсь - зачем, если люди не пользуются...

Получаем
Довольно своеобразное древо, которое немного отличается от того, что мы сейчас юзаем на данном форуме. Т.к. Ответы не отбираются по levelю, а пихаются 'как есть', т.е. последний ответ будет последним в ветке. Удобно это, или нет - решать не нам, а тем, кто будет данный форум юзать.

Да, вот тут еще вопрос о том, как ограничивать кол-во топиков возник. Ну конечно, не нужно использовать
limit
, хотя сделать это руки так и тянутся. Но все же, из всех "популярных" хостеров, которые нам предлагают свои услуги, я не нашел ни одного, который бы не предлагал любезно использовать MySQL в своих проектах...

Еще интересный вопрос можно обсудить о навигации по тредам на форуме. Вообще-то навигация по датам гораздо удобнее, если ее правильно применить в сочитании со "всплывающими топиками". Т.е. если на любую мессягу из треда пришел ответ, топик "всплывает" вверх и показывается вместе с последними поступленими. Но, это уже получается UBB какой-то :)