-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>";
    } 

これは、最初のページではなく、最後の 2 ページのみを表示します。最初の 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 に答える