Древовидные комментарии с бесконечной вложенностью

12 3
Sanu0074
На сайте с 31.08.2012
Offline
110
6872

Есть идея написать древовидные комментарии, не знаю на сколько она тупая или хорошая, и как сильно нагрузит сервер, но степень вложенности получится = 2

Есть таблица комментов:

id - id комента

content_id => id поста к которому принадлежат комменты

parent_id => id родительского коммента

..... и другие данные

При добавлении коммента, записываем parent_id = NULL - если это комментарий, не ответ на какой-либо (нет родителя)

или parent_id = id_коммента - которому ответили (родитель)

При извлечении:

- выбираем все комменты с нужным content_id

- проходим циклом по извлеченному массиву, если parent_id = NULL - приступаем к следующей итерации цикла, если в parent_id чтото есть - то извлекаем нужный коммент

Сформированную строку отдаем в браузер.

НУЖНО, переделать эту идею так чтобы степень вложенности была бесконечная.

Для этого необходимо что-то абсолютно новое или как-то можно доработать эту идею?

Интересны ваши предложения. Спасибо за внимание.

R
На сайте с 18.12.2009
Offline
92
#1

Я думаю рекурсия подойдет для данной задачи.

Sanu0074
На сайте с 31.08.2012
Offline
110
#2
rerighter:
Я думаю рекурсия подойдет для данной задачи.

подробнее можно?

LEOnidUKG
На сайте с 25.11.2006
Offline
1772
#3

Три столбца:

Свой ID|Родительский ID|Уровень вложения

Третий столбец, поможет потом нам CSS формировать.

Нагрузки не будет никакой, если с умом подходить. Выгружаем все данные в PHP функцию и пусть она сама строит древовидный массив. А мы потом перебираем его. Никаких запросов в БД дополнительных.

У меня это просто уже реализовано в моём скрипте CommentIt :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Sanu0074
На сайте с 31.08.2012
Offline
110
#4

LEOnidUKG,

в принципе идею понял.

уровень вложения с помощью JS определять перед добавлением?

LEOnidUKG
На сайте с 25.11.2006
Offline
1772
#5
Sanu0074:
LEOnidUKG,
в принципе идею понял.
уровень вложения с помощью JS определять перед добавлением?

Нет. Пользователь тыкает "Ответить" на нужный комментарий и через JS записывается ID того комментария на который он отвечает в hidden поле. А потому уже PHP узнаёт какой уровень у этого ID и делает +1. Я это делаю через простой запрос в БД. Учитывая, что там на ID стоит уникальный индекс.

Пользователю нельзя такое позволять делать. А то натворит делов :)

Sanu0074
На сайте с 31.08.2012
Offline
110
#6
LEOnidUKG:
А потому уже PHP узнаёт какой уровень у этого ID

как PHP узнает уровень вложенности?

LEOnidUKG
На сайте с 25.11.2006
Offline
1772
#7
Sanu0074:
как PHP узнает уровень вложенности?

Я это делаю через простой запрос в БД.

Sanu0074
На сайте с 31.08.2012
Offline
110
#8

LEOnidUKG,

Какой запрос, натолкните на идею..

LEOnidUKG
На сайте с 25.11.2006
Offline
1772
#9
Sanu0074:
LEOnidUKG,
Какой запрос, натолкните на идею..

В смысле какой запрос? Select level from TABLE where=id

Sanu0074
На сайте с 31.08.2012
Offline
110
#10
LEOnidUKG:
Цитата:
Сообщение от Sanu0074
как PHP узнает уровень вложенности?

Я это делаю через простой запрос в БД.

Этот запрос!

---------- Добавлено 04.11.2013 в 17:33 ----------

как php определит уровень вложенности и как этот уровень запишется при добавлении коммента!

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий