之前做數據分頁遇到這樣一個需求,就是數據到最後一頁的時候不能中斷,繼續把第一頁的數據追加到後面,無限顯示下去。 ...
之前做數據分頁遇到這樣一個需求,就是數據到最後一頁的時候不能中斷,繼續把第一頁的數據追加到後面,無限顯示下去。
原文地址:代碼匯個人博客 http://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;