Я пытаюсь создать систему комментариев, в которой могут быть сделаны комментарии, и люди могут отвечать на комментарии на более глубоком уровне (например, reddit). Я несколько понимаю, как ребенок ссылается на родительский идентификатор, чтобы он мог отображаться под родителем, но как вы на самом деле создаете родительский идентификатор, а затем получите этот идентификатор для ссылки на ребенка?
Вот пример того, что я хочу:
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 и т.д.?
Спасибо за любую помощь!
Во-первых, вы хотите настроить структуру таблицы. На сайте, который я реализовал, в таблицах были такие важные поля, как name
, content
, email
и т.д. Кроме того, у него было поле parent_id
которое могло ссылаться на другой комментарий в таблице. Это поле имеет NULL
если комментарий находится на верхнем уровне.
В моем PHP-скрипте он запрашивал бы все комментарии, имеющие parent_id = NULL
, а именно, только комментарии на верхнем уровне. Затем, пропуская все комментарии верхнего уровня, я бы parent_id
любые комментарии с 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
}
}
Parent
- New Comment
- This comments parent is "New Comment"
- This comments parent is "New Comment"
- This Comments parent is "Parent"
Родитель является "главным образом" комментарием внутри себя, просто доступ к форматированию.