Как лучше построить структуру древовидных комментариев (mysql)?

12
J
На сайте с 21.08.2011
Offline
78
#11

Ещё бы Disqus отказался от древовидности -- вообще классно было бы.

Также поддерживаю всех, кто против "дерева".

Особенно, если ещё и кликнуть надо, чтобы раскрыть комментарии, да плюс страница перезагружается или ждать долго надо -- сразу посылаю на* такие комментарии. :)

FFFFx029A
На сайте с 01.09.2007
Offline
142
#12

А как вам комментарии например тут community.modx-cms.ru/blog/20.html ? Вроде всё удобно, хотя если много ответов, то самый крайний будет уж очень "узкий" по ширине. Ну и на хабрхабр вроде тож всё деревом и более менее смотрится habrahabr.ru/post/171053/

Пока сортировку массива дерева вроде сделал (достаю одним запросом всё и закидываю в массив), но еще надо чтоб по дате просортировало, мож у кого есть наброски?

Хочу всётаки допилить кнопку "показать дерево" чтоб отображало и открывало все дерево, а по умолчанию будет более менее стандартно и ответ будет появляться под комментом на который отвечаешь (а если есть еще ответы, то появится под ними, как-то так вообщем).

Вот для наглядности нарыл сортировку, но оно не сортирует по дате:


// подключаемся к базе данных
// делаем выборку из таблицы категорий
$result = mysql_query ("SELECT `id`, `parent_id`, `name` FROM `catalog_cats`");

$cats = array(); // тут будет наш массив с категориями каталога
// в цикле формируем нужный нам массив
while($cat = mysql_fetch_assoc($result))
$cats[$cat['parent_id']][] = $cat;
// далее наша главная, рекурсивная функция, которая сформирует дерево категорий
function create_tree ($cats,$parent_id){
if(is_array($cats) and isset($cats[$parent_id])){
$tree = '<ul>';
foreach($cats[$parent_id] as $cat){
$tree .= "<li><a href='catalog.html?catid=".$cat['id']."'>".$cat['name']."</a>";
$tree .= create_tree ($cats,$cat['id']);
$tree .= '</li>';
}
$tree .= '</ul>';
}
else return null;
return $tree;
}

// вызываем функцию и строим дерево
echo create_tree ($cats, 0);
http://www.youtube.com/watch?v=Gyl4E4EcPdc (http://www.youtube.com/watch?v=Gyl4E4EcPdc) - партнёрка от Мавроди и МММ))) http://miniwm.ru/soft.php?read=917 (http://miniwm.ru/soft.php?read=917) CMS MiniWM v2.8 - 49.99$
IL
На сайте с 20.04.2007
Offline
435
#13

Щас меня камнями закидают :D

В некоторых случаях считаю деревья вполне оправданными. Форумы древовидные не воспринимаю (тут соглашусь...), а вот те же комменты на хабре, там где идёт активное обсуждение с относительно большим количеством участников - вполне. По крайней мере видно ветвь дискуссии, ход мыслей можно проследить без перелистываний и прокруток..

Затрудняюсь представить там комментарии отсортированные по дате.. особенно "холиварные" с обращениями..

дани мапов:
Но в конце концов, все-таки поставил обычные комментарии из-за того что в древовидных неудобно искать свежие комментарии. Допустим кто-то ответит на старое сообщение и его ответ будет под этим поздним комментарием, а не в начале списка, как все привыкли.

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

В общем, как и с другими ситуациями есть плюсы и минусы..

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Ayavryk
На сайте с 11.10.2003
Offline
209
#14
Алеандр:
Присоединяюсь к тем, кто против древовидных.

Имхо конечно, но дерево больше способствует флейму и разговору не по делу. Если рассматривать форум как генератор контента то это не так уж и плохо. Заодно длинные ветки легко в отдельные топики перебрасывать.

Топикстартеру. Пошукайте здесь вариантов оптимизации очень много. Очень подробно здесь. Есть варианты без рекурсии. Я предпочитаю рекурсию сбрасывать на шаблонизатор. Но это отдельная тема.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий