Это похоже на то, что я использую сейчас. Единственная сложная часть - вычисление следующего пути ответа для вставки, когда кто-то отвечает на комментарий.
В Примере данных
ID | Comment | Path
---+------------------------------+----------
0 | Comment #1 | 01
1 | Comment #1 reply | 01_01
2 | Comment #1 reply reply | 01_01_01
3 | Comment #1 reply reply | 01_01_02
4 | Comment #2 | 02
5 | Comment #3 | 03
6 | Comment #3 reply | 03_01
В Примере SQL-
SELECT * FROM comments ORDER BY path
В Примере РНР
while ($result = mysql_fetch_assoc($query)) {
$nesting_depth = count(explode("_", $result['path']));
$branch = str_repeat("--", $nesting_depth);
echo $branch {$result['comment']}";
}
В Примере Результат
Comment #1
-- Comment #1 reply
---- Comment #1 reply reply
---- Comment #1 reply reply
Comment #2
Comment #3
-- Comment #3 reply
Для того, чтобы ответ на 01_01
SELECT path FROM comments WHERE path LIKE '01\_01\___'
$last_path = $row[0];
$last_path_suffix = substr($last_path,strrpos($last_path,'_')+1);
$next_path_suffix = str_pad($last_path_suffix+1,2,'0',STR_PAD_LEFT);
$next_path = substr($last_path,0,strlen($last_path)-strlen($last_path_suffix)).$next_path_suffix;
Как бы ограничить этот запрос до 10 сообщений (в том числе их ответов)? Используя «LIMIT 10», будет возвращено всего 10 строк, неважно, являются ли они родителями или детьми. Как будет выглядеть разбивка на страницы в этом случае? Кроме того, я знаю, что опаздываю на вечеринку.^ _^ – Bastien
@Bastien Вы когда-нибудь выясняли, как сделать разбиение на страницы или «загрузить больше комментариев» с этой настройкой? – Nathan