2

今、私のページネーションはこのようなものを表示します

[1] [2] [3] [4] [5] [6] [7] [8] [9]

どうすればこのように表示されますか

[1] [2] [3] [4] [5] ... [9]

<?php
$per_page = 10;
$pages_query = mysql_query ("SELECT COUNT(`message_id`) FROM `messages`") or die(mysql_error());
$pages = ceil(mysql_result ($pages_query, 0) / $per_page);
$page = (isset ($_GET['page'])) ? (int) $_GET['page'] : 1; 
$start = ($page - 1) * $per_page;
?>

ページネーションをエコーアウトする関連するifステートメント

<?php
    if ($pages >=1 && $page <= $pages) {
        for ($x=1; $x<=$pages;$x++) {
            echo "<a href=\"?page=" .$x."\">".$x."</a>";
        }
    }
?>
4

2 に答える 2

5

これを試して :

    <?php
        $link = "";
 // $page = $_GET['page'];
 // $pages=20; // Hardcoded for testing purpose
  $limit=5  ;
    if ($pages >=1 && $page <= $pages)
    {
        $counter = 1;
        $link = "";
        if ($page > ($limit/2))
           { $link .= "<a href=\"?page=1\">1 </a> ... ";}
        for ($x=$page; $x<=$pages;$x++)
        {

            if($counter < $limit)
                $link .= "<a href=\"?page=" .$x."\">".$x." </a>";

            $counter++;
        }
        if ($page < $pages - ($limit/2))
         { $link .= "... " . "<a href=\"?page=" .$pages."\">".$pages." </a>"; }
    }

    echo $link;
?>

出力:

//At page=1
1 2 3 4 ... 20 

//At page=12
1 ... 12 13 14 15 ... 20 

//At page=18
1 ... 18 19 20 
于 2013-03-06T08:26:52.737 に答える
3
<?php
    if ($pages >=1 && $page <= $pages) {
        $counter = 1;
        $link = "";
        for ($x=1; $x<=$pages;$x++) {
            if($counter < 5)
                $link .= "<a href=\"?page=" .$x."\">".$x."</a>";

            $counter++;
        }
        $link .= "...";
        $link .=  "<a href=\"?page=" .$pages."\">".$pages."</a>";
    }
    echo $link;
?>
于 2013-03-06T08:02:14.910 に答える