现在我有一些链接可以移动到上一页或下一页(或任何页码)。
ex. <--prev | 0 | 1 | 2 | 3 | next-->
我的问题是我只在页面上列出了“status ='A'”的项目。 (A表示活动...此页面上不再列出某些项目,删除时为'D',售罄时为'S'。
在SQL中我有... WHERE status='A' LIMIT $start_item, 20
我的问题在于上一个链接。我应该如何为它计算$ start_item?现在我正在使用当前ID(当前正在显示的页面上的第一个ID)并从中减去20(每页的项目数)。但是如果在当前ID和ID-20之间有任何不活动的项目,则单击Prev时显示的20个项目将会遇到当前ID。
答案 0 :(得分:0)
您根本不需要知道物品的ID。在应用WHERE过滤后,LIMIT会对结果起作用,因此您需要知道的是 - 每页有多少项(本例中为20项)。然后LIMIT 0,20会给你第一页的项目; LIMIT 20,20 - 第二页等.LIMIT中的第一个数字不是id,而是结果集中的项目数。
答案 1 :(得分:0)
根据你的例子,看到页面编号从零开始有点奇怪。如果您使用以下内容:
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和ID-20之间有任何不活动的项目,则单击Prev时显示的20个项目将会遇到当前ID。
WHERE status = 'A'
,因此非查询项目(状态不是“A”的项目)永远将从查询中返回。那说......