0

何千もの結果を生成できる大規模なデータベースがあり、たとえば 9 つのリンクのページネーション リンクの量を制限する必要があります。前の 4 ページを片側に、次に現在のページを次に 4 つのページにします。

例: 14|15|16|17| 18 |19|20|21|22 どうすればこれを達成できるか知っていますか? ありがとう

if (isset($_GET["page"])) 
  { 
    $page  = $_GET["page"];
  } 
    else 
  { 
    $page=1; 
  };

$start_from = ($page-1) * 10;
$message =  "SELECT * FROM document WHERE email='$_SESSION[email]' ORDER BY id DESC LIMIT $start_from , 10";

          // echo  results

         // make page links for results

  $sql = "SELECT id FROM document WHERE email = '$_SESSION[email]'";
  $rs_result = $db->query($sql);
  $total_records = $rs_result->num_rows;
  $total_pages = ceil($total_records / 10);

  if($rs_result->num_rows >10) {

$page = "<p class = 'page'>";
  for ($i=1; $i<=$total_pages; $i++) 
 {
   $page .="<a href='results.html?page=".$i."'>".$i."</a> ";
 }
   $page .="</p>";
   echo $page;
}
4

1 に答える 1

2

基本的な計算を使用して、ループで使用する開始ページと終了ページを計算するだけです。

$page_range_offset = 4;    
$page_start = $page - $page_range_offset;    
if ($page_start < 1) {
    $page_start = 1;
}    
$page_end = $page + $page_range_offset;
if ($page_end > $total_pages) {
    $page_end = $total_pages;
}

for ($i=$page_start; $i<=$page_end; $i++) {
   $page .="<a href='results.html?page=".$i."'>".$i."</a> ";
}
于 2013-02-12T00:40:57.090 に答える