Slash-Zn
@Slash-Zn

Пагинация комментариев (одна страница). Как решить проблему после удаления/добавления комментов?

Столкнулся с проблемой... Сам не уверен, что смогу понятно объяснить суть проблемы. В общем, есть блок комментариев, отображаются последние 10 комментов, чтобы просмотреть предыдущие 10 надо нажать на кнопку "Предыдущие комментарии 20 / 89" (цифры "20 / 89" могут быть другие). Комментарии постоянно добавляются и некоторые удаляются, как спам или прочий хлам. Сценарий выполняется отлично, все комменты выводятся по порядку, пока не добавишь или удалишь коммент. После добавления или удаления коммента, нажимая на кнопку "Предыдущие комментарии 20 / 89" некоторые комменты могут потеряться или повториться дважды. Добавлением/Удалением коммента я нарушаю корректность пагинации.

Комментарии выводятся на одной странице, то есть это не постраничная пагинация.

Я пробовал добавлять/отнимать количество добавленных/удаленных комментов к лимиту в запрос, это нарушает цепочку пагинации еще больше.
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@rPman
Постраничная навигация должна быть не по номерам страниц, а номерам первых комментариев на очередной странице, т.е. в идентификаторе в url должен быть именно этот идентификатор а не номер страницы. При получении несуществующего 'первого' комментария, делать поиск по ближайшего наибольшего id (select ... where id > @current_page_id limit 1), то потребует инкрементального id (а так все и делают) это значит и сортировку комментариев на странице делать можно по нему, и вообще выборку.

Недостатки - сложно получить N-тую страницу, так как придется перебирать всю базу, но обычно никто не заморачивается с этим и обходятся первые M страниц, затем многоточие, затем ссылка на последнюю и количество страниц считать от общего количества комментариев.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы