-4

我有自定义 PHP 站点并使用此脚本进行分页。

echo "Page <strong>$pagenum</strong> of <strong>$last</strong><br><br>";
    if ($pagenum == 1)
    {
    }
    else
        {
        echo "<li> <a href='{$_SERVER['PHP_SELF']}?pagenum=1'><strong>First page</strong></a></li>";
        echo " ";
        $previous = $pagenum-1;
        echo "<li> <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'>".$previous."</a></li>";
        }

        echo "";


    if ($pagenum == $last)
        {           
        }
    else {
        $next = $pagenum+1;
        echo "  ....  <li><a href='{$_SERVER['PHP_SELF']}?pagenum=$next'> ".$next."</a></li>";
        echo " ";
        echo "<li><a href='{$_SERVER['PHP_SELF']}?pagenum=$last'><strong>Last page</strong></a></li>";
    } 

这仅显示最后两页,甚至不显示第一页。如何自定义它以显示前 5 页和后 5 页。

4

1 回答 1

0

这一切都取决于您的页面的存储位置和方式!如果您使用数据库执行此操作,则需要检查 $pagenum (我们在任何地方都看不到定义)是否具有上一页/下一页...并在此基础上绘制 +/- 5 页锚点!最好做一些循环!

另一方面,如果您没有使用任何数据库并且只想根据 ?pagenum=(number) 显示一些内容,这就是您在这里所做的!一旦用户在新页面上,您需要通过 $_GET['pagenum'] 获取当前页面!以便内容正确显示!

$pagenum = isset( $_GET['pagenum'] ) ? intval($_GET['pagenum']) : 0;

那么您只需执行以下操作:

echo "<a href=\"{$_SERVER['PHP_SELF']}?pagenum=$first\">first</a>";

for ( $i = $pagenum-5; $i <= $pagenum+5; ++$i ) // check if the pages exist as well somewhere ;)
{
    if ( $pagenum != $i ) 
    {
        echo "<a href=\"{$_SERVER['PHP_SELF']}?pagenum=".($i)."\">$i</a>";
    }
    else
    {
        echo "<a href=\"#\">Current</a>";
    }
}

echo "<a href=\"{$_SERVER['PHP_SELF']}?pagenum=$last\">last</a>";

如果那个“方法”对你来说太基本了,看看这个simple-php-mysql-paginationhow-to-paginate-data-with-phpbasic-pagination

于 2012-11-25T00:54:06.563 回答