Mysql Закрытие адреса таблицы потомка в переполнении стека

У меня есть стол стол

+----+-------+--------------+
| Id | Name | Message |
+====+=======+==============+
| 1 | John | John's msg |
| 2 | Marco | Marco's msg |
| 3 | Ivan | Ivan's msg |
+----+-------+--------------+

Таблица комментариев, PostId — внешний ключ

+----+-------+--------------+--------+
| Id | Name  | Comment      | PostId |
+====+=======+==============+========+
| 1  | John  | John's msg   | 2      |
| 2  |Joseph |Joseph's msg  | 2      |
| 3  | Ivan  | Ivan's msg   | 2      |
| 4  |Natalie|Natalie's msg | 1      |
+----+-------+--------------+--------+

Создана таблица закрытия для сохранения иерархии комментариев, как описано в:
http://karwin.blogspot.ba/2010/03/rendering-trees-with-closure-tables.html

Закрытие стола

+----------+-------------+
| ancestor | descendant |
+==========+=============+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 4 | 4 |
+----------+-------------+

Для того чтобы создать отношение предка> потомка в PHP I
используйте этот запрос

`select c.* from comments c join closure t on (c.id = t.descendant ) where c.postid=2`

Я получаю результат с первым 3 комментариями из таблицы комментариев.
Но я хочу отобразить это на веб-странице следующим образом:

Post Id=2
Comment id=1
Comment id=2
Comment id=3

Я не знаю, как сказать PHP, кто является предком, а кто
потомок. Это моя лучшая попытка:

$sql = "select c.* from comments c join closure t on
(c.id = t.descendant ) where c.postId=2";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "Name: " . $row["name"]."". "Message:" . $row["comment"].";
}
} else {
echo "No comments yet";
}

Но он показывает только все комментарии в строке. Нужен способ определить, когда комментарий является потомком.

while($row = $result->fetch_assoc()) {
if (ascendant){
echo "ascendant comment"}
else{
echo "tab"."descendant comment"}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]