1. 程式人生 > >php分頁資料最後一頁繼續追加第一頁資料

php分頁資料最後一頁繼續追加第一頁資料

之前做資料分頁遇到這樣一個需求,就是資料到最後一頁的時候不能中斷,繼續把第一頁的資料追加到後面,無限顯示下去。
原文地址:程式碼匯個人部落格 https://www.codehui.net/info/23.html

一般情況我們寫資料分頁都是如下程式碼

//分頁碼
$page = $_REQUEST['page'];
//顯示條數
$limit = 10;
//分頁開始條數
$start_limit = ($page - 1) * $limit;
//執行sql語句得到的結果
$list = model('table')->limit("$start_limit, $limit")->findAll();
//返回資料
return $list;

比如我們有102條資料,到了11頁的時候就會只有2條資料,顯然這不是我們要的結果。如果我們想要第11頁資料顯示的是最後的2條+第1頁的前8條,就不能用這種方法了。

//分頁碼
$page  = $_REQUEST['page']; 
//顯示條數
$limit = 10;
//資料總條數
$count = model('table')->count();
//取模
$pattern = (($page - 1) * $limit) % $count;  
//餘條數
$pattern_limit = $pattern % $limit;
//獲取資料
$list = model('table')->limit("$pattern, $limit")->findAll();
//資料條數小於頁面顯示條數 繼續查詢進行追加
if(count($list) < $limit){
    //差資料條數
    $remainder = $limit - count($list);
    //重頭開始查詢資料
    $new_list = model('table')->limit("0, $remainder")->findAll();
    //合併資料
    $list      = array_merge($list, $new_list);
}
return $list;