dslfjrmz70457 2013-02-12 00:31
浏览 40
已采纳

设置最大分页链接

I have a large database which can yield thousands of results and I need to limit the amount of pagination links of say 9 links, with previous 4 pages on one side then the current page then the 4 next pages.

for example: 14|15|16|17|18|19|20|21|22 anyone know how I could achieve this? Thanks

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;
}
  • 写回答

1条回答 默认 最新

  • dongsui5464 2013-02-12 00:40
    关注

    Just use basic math to calculate the start and end pages for use in your loop:

    $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> ";
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?