1

重複の可能性:
PHP ページネーション リンクを分割する

Web ページで単純なページングを使用しましたが、機能しています。ただし、私の問題は、ページングリンクが次のように多数に達するときです

ページ: [1]、[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]、[12]、 [13]、[14]、[15] など。

私はそれを 5 つのリンクに切り取り、次の 5 つのリンクのボタンを次のように表示したかったのです。

ページ: [1] ,[2],[3],[4],[5] [次の 5].

をクリックする[Next 5]と、[前の 5] [6]、[7]、[8]、[9]、[10] [次の 5] と表示され、現在のページは 6 ページです。

(太字は現在のページを表します。)

変更するコードは次のとおりです。

$perpage = 10;

if(isset($_GET["pagenum"])) {
  $page = intval($_GET["pagenum"]);
} else {
  $page = 1;
}
$calc = $perpage * $page;
$start = $calc - $perpage;

$orders_count = 150;
$rowss = $orders_count;

if($rowss) {
   $total = $orders_count;
}

$totalPages = ceil($total / $perpage);

if($page <=1 ) {
  $feedbacks .= "";
} else {
  $j = $page - 1;
  $feedbacks .= "<a class='first-page' title='Go to the first page' href='" . $path . "&pagenum=$j'>&laquo;</a>";
}

for($i=1; $i <= $totalPages; $i++) {
  if($i<>$page) {
     $feedbacks .= "<a class='first-page' title='Go to the first page' href='" . $path . "&pagenum=$i'>$i</a>";
  } else {
     $feedbacks .= "<a class='first-page disabled' title='Go to the first page' href='#'>$i</a>";
  }
}

if($page == $totalPages ) {
  $feedbacks .= "";
} else {
  $j = $page + 1;
  $feedbacks .= "<a class='last-page' title='Go to the first page' href='" . $path . "&pagenum=$j'>&raquo;</a></span>";
}

$feedbacks .= "</div>";
echo $feedbacks;
4

1 に答える 1

1

それは興味深い質問でした:)

それが役に立てば幸い。

<?php
//set params
$total = 283;
$maxPerPage = 10;
$cutStarting = 5;
$totalPages = ceil($total / $maxPerPage);
$prevPageNum = 0;

//set currentPageId
$currentPage = isset($_GET['pagenum']) ? intval($_GET['pagenum']) : 1;

if ($currentPage > $totalPages && $currentPage < 1) {
    $currentPage = 1;
}

//set first row (maybee for limits in mysql query)
$firstRow = ($currentPage * $maxPerPage) - ($maxPerPage) + 1;

//calculate prev link pageId
if ($currentPage > $cutStarting) {
    $prevPageNum = floor(($currentPage - 1) / $cutStarting) * $cutStarting;
    echo '[ <a href="?pagenum='.$prevPageNum.'">Prev 5</a> ] ';
}

//generate number page links
$links = '';
$first = ($prevPageNum + 1);
$last = $first + $cutStarting;

for ($i=($prevPageNum + 1); $i < $last; $i++) {
    if ($i <= $totalPages) {
        if ($currentPage == $i) {
            $links .= '[ <b>'.$i.'</b> ] ';
        } else {
            $links .= '[ <a href="?pagenum='.$i.'">'.$i.'</a> ] ';
        }
    }
}

echo ' '.$links;

//calculate next link pageId
$nextPageNum = ( ceil( $currentPage / $cutStarting ) * $cutStarting ) + 1;
if ($nextPageNum <= $totalPages) {
    echo '[ <a href="?pagenum='.$nextPageNum.'">Next 5</a> ] ';
}


//get some infos for testing
echo '<br /><br />Testing<hr>';
echo 'Total Pages: '.$totalPages.'<br />';
echo 'Current Page: '.$currentPage.'<br />';
echo 'First Row: '.$firstRow;
?>

注:javasciptでこのようなことを行うと、サーバーに適しています;)

于 2012-12-31T08:35:45.187 に答える