Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ветвление в форуме.

1.9K
26 января 2005 года
Andius
61 / / 04.01.2004
Я написал форум. Писал довольно долго. В данный момент меня устраивает его функциональность, но... есть одно но.
Сейчас сделано так:

- тема(сообщение 1)
- (сообщение 2 ответ на 1)
- (сообщение 3 ответ на 1)
- (сообщение 4 ответ на 2)
- (сообщение 5 ответ на 2)

Все сортируется по дате.
Но нет ветвления. Мне нужно, чтобы был отступ слева(определенного размера) и нормальная сортировка.
То есть вот так:

- тема(сообщение 1)
- (сообщение 2 ответ на 1)
- (сообщение 4 ответ на 2)
- (сообщение 5 ответ на 2)
- (сообщение 3 ответ на 1)

Как это сделать?

p.s. прошу прощения, если вопрос непонятен.
4
27 января 2005 года
mike
3.7K / / 01.10.2002
А у тебя есть в базе пометки какое сообщение является ответом на какое ?

Для Oracle есть хорошее решение проблемы - CONNECT BY PRIOR.

В MySql придется писать рекурсию и делать несколько запросов, например так:

 
Код:
function ShowAnswers($post_id,$depth) {
    $r=mysql_query("SELECT * FROM post
                    WHERE answer_to='$post_id' AND другие условия"
);
    while ($a=mysql_fetch_assoc($r) {
        print_r($a); // Допустим, это вывод сообщения
        ShowAnswers($a["post_id"],$depth+1);
        }
    }


То есть. Для каждого сообщения мы выбираем все ответы. Каждый ответ - это тоже сообщение, по этому, для каждого сообщения .... и так пока ответов не будет
1.9K
28 января 2005 года
Andius
61 / / 04.01.2004
Спасибо, разобрался! :)
291
29 января 2005 года
gufy
703 / / 08.01.2003
вообще, деревья в БД удобно хранить так: http://detail.phpclub.ru/article/2002-06-03 . тогда нет рекурсии..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог