代码之家  ›  专栏  ›  技术社区  ›  Josh Curren

与上一个链接有关的问题

  •  0
  • Josh Curren  · 技术社区  · 16 年前

    现在我有一些链接可以移动到上一页或下一页(或任何页码)。

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

    我的问题是,我只在页面上列出带有“status='a'”的项目(一个积极的。。。某些项目不再在此页面上列出,删除时将显示“D”,售罄时显示“S”)。

    ... WHERE status='A' LIMIT $start_item, 20

    2 回复  |  直到 16 年前
        1
  •  0
  •   OMG Ponies    16 年前

    根据您的示例,看到页面编号从零开始有点奇怪。如果您使用以下选项:

    start_item = (page_number - 1) * num_items_per_page
    

    我的问题是上一个链接。我应该如何计算它的$start\u项?

    听上去,您正在请求中传递start\u项。我只需要使用页码,并根据要求进行计算。那么你需要的就是 Prev Next 纽扣是 current_page_number - 1 current_page_number + 1 . 如果您决定允许用户选择每页有多少个项目,这也会更加方便。

    请记住,限制有两个参数:

    • 起始行

    …因此您的限制类似于以下伪代码:

    LIMIT [(page_number - 1) * num_items_per_page], 20
    

    如果在当前ID和ID-20之间有任何未激活的项目,则单击Prev时显示的20个项目将运行到当前ID中。

    1. 因为你有 WHERE status = 'A' ,非活动项(状态不是“A”的项)将 从未 将从查询中返回。也就是说。。。
    2. 商品状态将发生变化-它们可以按您所说的方式被删除或出售,这将导致数据移动。当前项目始终可能位于页面的尖端,而另一个正在更改的项目状态可能会导致当前项目现在位于上一页。
        2
  •  0
  •   morhekil    16 年前

    你根本不需要知道物品的ID。“限制”在应用筛选后对结果起作用,因此您需要知道的是每页有多少项(本例中为20项)。然后限制0,20会给你第一页的项目;限制20,20-第二页等。限制中的第一个数字不是id,而是结果集中的项目数。