Проблемы с предыдущей ссылкой - PullRequest
0 голосов
/ 24 декабря 2009

Прямо сейчас у меня есть несколько ссылок для перехода на предыдущую страницу или на следующую страницу (или любой номер страницы).

ex. <--prev | 0 | 1 | 2 | 3 | next-->

Мои проблемы заключаются в том, что я перечисляю только элементы на странице с"статус = 'A'".(A для активных ... некоторые элементы больше не перечислены на этой странице и будут иметь «D» для удаления или «S» для продажи).

В SQL у меня есть ... WHERE status='A' LIMIT $start_item, 20

Мои проблемы с предыдущей ссылкой.Как мне рассчитать $ start_item для него?Прямо сейчас я использую текущий идентификатор (первый идентификатор на отображаемой странице) и вычитаю из него 20 (количество элементов на странице).Но если есть какие-либо элементы, которые не активны между текущим идентификатором и ID-20, тогда 20 элементов, отображаемых при нажатии на Prev, будут работать с текущим идентификатором.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2009

Исходя из вашего примера, немного странно видеть нумерацию страниц, начинающуюся с нуля. Если вы используете следующее:

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 элементов, отображаемых при нажатии на «Предыдущий», попадут в текущий идентификатор.

  1. Поскольку у вас есть WHERE status = 'A', неактивные элементы (элементы, статус которых не 'A') будут никогда возвращаться из запроса. Тем не менее ...
  2. Состояние элемента изменится - их можно удалить или продать, как вы говорите, что приведет к смещению данных. Всегда возможно, что текущий элемент находится на пороге страницы, а другое измененное состояние элементов может привести к тому, что текущий элемент окажется на предыдущей странице.
0 голосов
/ 24 декабря 2009

Вам вообще не нужно знать идентификаторы предметов. LIMIT работает с результатами после применения фильтрации WHERE, поэтому все, что вам нужно знать, - это количество элементов на странице (20 в данном случае). Тогда LIMIT 0, 20 выдаст вам первую страницу предметов; LIMIT 20, 20 - вторая страница и т. Д. Первое число в LIMIT - это не идентификатор, а номер элемента в результирующем наборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...