Как создать идентификатор родителя, а затем заставить ребенка ссылаться на него в многопоточной системе комментирования?

Я пытаюсь создать систему комментирования, в которой можно делать комментарии, и люди могут отвечать на комментарии на более глубоком уровне (например, reddit). Я немного понимаю, как Child ссылается на Parent ID, чтобы он мог отображаться под родителем, но как вы на самом деле создаете Parent ID, а затем получаете этот ID для ссылки на ребенка?

Вот пример того, что я хочу:

Main Comment
Reply to Main Comment
Reply to Main Comment
Reply to Child Comment
Reply to Child Child Comment
Reply to Main Comment
Main Comment

И я понимаю, что глубина будет

0
1
1
2
3
1
0

Но как мне назначить идентификатор родителя, чтобы первый главный комментарий был, скажем, AAA, а второй основной комментарий — AAB, и так далее?

Спасибо за любую помощь!

0

Решение

Parent
- New Comment
- This comments parent is "New Comment"- This comments parent is "New Comment"- This Comments parent is "Parent"

Родитель — это «в основном» комментарий внутри себя, просто больше доступа к форматированию.

0

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

Во-первых, вы хотите настроить структуру таблицы. На сайте, который я реализовал, таблицы имели такие важные поля, как, name, content, emailи т. д. Кроме того, он имел parent_id поле, которое может ссылаться на другой комментарий в таблице. Это поле NULL когда комментарий на верхнем уровне.

В моем сценарии PHP он будет запрашивать все комментарии, которые имели parent_id = NULLа именно только комментарии на верхнем уровне. Затем, просматривая все комментарии верхнего уровня, я запрашивал любые комментарии с parent_id равный id комментария, который я просматривал. Тогда я бы придал ему стиль с отступом.

Ваш псевдокод будет выглядеть так:

// Query for comments
while ($comment = mysqli_fetch_array($comments)) {
// Render top level comment
// Query for sub-level comments with parent_id of $comment
while ($subcomments = mysqli_fetch_array($subcomments)) {
// Render sub-level comment
}
}
0

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