自定义PHP站点的分页

时间:2012-11-25 00:27:32

标签: php pagination

我有自定义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页。

1 个答案:

答案 0 :(得分:0)

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

另一方面,如果您没有使用任何数据库,只想根据?pagenum =(数字)显示一些内容,这就是您在这里所做的事情!一旦用户进入新页面,您将需要通过$ _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