对搜索结果应用分页,每次限制10页


apply pagination to search results, limit 10 pages per time

下面的代码是我在搜索结果中用于分页的代码。生成搜索结果后,我的代码将以以下格式显示结果:"START PREVIOUS 1 2 3 4 5 6 7 8 9 10 NEXT"。我只想让分页中的指针不退出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> ";

不要让数字从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> ";

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

示例(如果只有12页)

1...102...113...124...125...12

话虽如此,在我看来,这是一种糟糕的方法。有很多很棒的PHP库/类可以做得更好,并使其"通用",所以你不必为每一个有分页的页面编写代码。