Исходя из вашего примера, немного странно видеть нумерацию страниц, начинающуюся с нуля. Если вы используете следующее:
start_item = (page_number - 1) * num_items_per_page
... вы можете отображать страницы, начинающиеся с 1.
Мои проблемы с предыдущей ссылкой. Как мне рассчитать $ start_item для него?
Судя по звукам вещей, вы передаете start_item в своем запросе. Я бы просто использовал номер страницы и вычислял по запросу. Тогда все, что вам нужно для кнопок Prev
и Next
, это current_page_number - 1
и current_page_number + 1
. Также удобнее, если вы решите позволить пользователям выбирать, сколько элементов на странице.
Имейте в виду, что LIMIT имеет два параметра:
- начальный ряд
- смещение * * один тысяча двадцать-одна
... поэтому ваш лимит будет похож на этот псевдокод:
LIMIT [(page_number - 1) * num_items_per_page], 20
если между текущим идентификатором и идентификатором ID-20 есть какие-либо элементы, которые не активны, то 20 элементов, отображаемых при нажатии на «Предыдущий», попадут в текущий идентификатор.
- Поскольку у вас есть
WHERE status = 'A'
, неактивные элементы (элементы, статус которых не 'A') будут никогда возвращаться из запроса. Тем не менее ...
- Состояние элемента изменится - их можно удалить или продать, как вы говорите, что приведет к смещению данных. Всегда возможно, что текущий элемент находится на пороге страницы, а другое измененное состояние элементов может привести к тому, что текущий элемент окажется на предыдущей странице.