【问题标题】:apply pagination to search results, limit 10 pages per time对搜索结果应用分页,每次限制 10 页
【发布时间】:2013-07-10 23:45:42
【问题描述】:

以下代码是我在搜索结果中用于分页的代码。生成搜索结果后,我的代码将以以下格式显示结果:“START PREVIOUS 1 2 3 4 5 6 7 8 9 10 NEXT”。我想要的是分页中的指针不要exid 10个元素。例如,如果搜索结果产生 11 页,那么如果我按 10 来查看第 10 页,那么我的分页格式将是这样的“START PREVIOUS 2 3 4 5 6 7 8 9 10 11 NEXT”(您从第 2 页开始)。我尝试了一些来自 stackoverflow 的示例,但对我不起作用。 这是我的代码:

<?php

    $prev = $page - 1;
    $next = $page + 1;

    if($prev > 1)
    echo"<a href='?value=$value'>Start</a> ";

    if($prev > 0)
    echo"<a href='?value=$value&page=$prev'>previous</a> ";


    $number=1;
    for($number; $number<=$num_pages; $number +=1)
    {


        if($page==$number)
        echo"<b> [$number] </b>";

        else
        echo"<a href='?value=$value&page=$number'> $number </a>";



    }



    if($page < ceil($num_rows/$per_page))
    echo"<a href='?value=$value&page=$next'>next</a> ";

【问题讨论】:

  • 你的问题是什么?你碰巧知道减法吗?
  • 如果搜索结果中的页面超过 10 个,比如说 15 个,那么我会得到“START PREVIOUS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NEXT”。我不想要那个。我想在这种情况下获得“START PREVIOUS 1 2 3 4 5 6 7 8 9 10 NEXT”,当用户按下第 10 页以获取“START PREVIOUS 2 3 4 5 6 7 8 9 10 11 NEXT”等等得到“开始上一个 5 6 7 8 9 10 11 12 13 14 15 下一个”。每次必须显示 10 个元素。知道怎么做吗?
  • 你碰巧知道减法吗?比如说,你能从 15 中减去 10 吗?
  • 我们正在讨论结果超过10页的情况......

标签: php pagination


【解决方案1】:

不是从 1 开始的数字,而是从 $page 开始并将其限制为 10 或直到达到最大值。

$prev = $page - 1;
$next = $page + 1;

if($prev > 1)
echo"<a href='?value=$value'>Start</a> ";

if($prev > 0)
echo"<a href='?value=$value&page=$prev'>previous</a> ";

for($number = 0; $number < 10 && ($number + $page) < $num_pages; $number +=1)
{


    if($number = 1)
    echo"<b> [$page] </b>";

    else
    echo"<a href='?value=$value&page=" . ($number + $page) . "'> " . ($number + $page) . " </a>";



}



if($page < ceil($num_rows/$per_page))
echo"<a href='?value=$value&page=$next'>next</a> ";

这样,除非没有更多页面,否则它将始终被选中 page + 10。

示例(如果只有 12 页)

1...10 2...11 3...12 4...12 5...12

话虽如此,在我看来,这是一种糟糕的做法。有大量优秀的 PHP 库/类可以做得更好并使其“通用”,因此您不必为每个分页页面编写代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2014-03-26
    • 2017-02-24
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多