【问题标题】:Recalculate pagination on first item after changing the amount of items更改项目数量后重新计算第一个项目的分页
【发布时间】:2018-03-18 09:50:51
【问题描述】:

我有一个包含 100 种产品的列表,默认情况下这些产品被细分为 10 项。所以我的分页有 10 页 10 项。用户可以选择在列表中显示 10 项还是 20 项。

现在我希望如果第 3 页上的用户从 10 个项目切换到 20 个项目,则根据第 3 页的当前第一项重新计算分页。

在项目数量之间切换后,分页现在总是在第 1 页重新开始。

不幸的是,我无法弄清楚对此的最佳计算是什么。

【问题讨论】:

    标签: php pagination


    【解决方案1】:

    我将有一个类 Paginator 和一个方法 getData($limit, $page)

    关于用户的选择,将当前$page$_GET$_POST 参数和所需的$limit 赋予getData($limit, $page) 方法。

    然后我会从数据库中读取所需的行数并将其存储在$result 中。 (总是从最后一个 item id 开始,并将其限制为用户想要查看的行数。就像 SQL 中的limit 30,如果用户想要查看 30 行) em>

    之后,读出您刚刚从数据库中提取的最后一行的 id(last item of $result)。将该 id 存储在类似 $lastid 的 var 中。现在您从刚刚从$result 数组的最后一项收到的$lastid 开始。并从数据库中提取接下来的 30 个项目。

    我会将页面存储在一个多维数组中。

    $pages = array("0"=>array(item1, item2, ... item30),"1"=>array(item31, item32, ... item 60), ...)
    

    这给了你这样的结构:

    Array
    (
        [0] => Array
            (
                [0] => item1
                [1] => item2
                [2] => item3
                ...
                [29] => item30
            )
    
        [1] => Array
            (
                [0] => item31
                [1] => item32
                ...
                [29] => item60
            )
    )
    

    要显示我想要的项目,然后只需使用 foreach 循环来生成页面选项卡。

    foreach($pages as $page_number => $items){
        /* Your code */
    }
    

    希望对你有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-07
      • 2015-09-28
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多