以前作數據分頁遇到這樣一個需求,就是數據到最後一頁的時候不能中斷,繼續把第一頁的數據追加到後面,無限顯示下去。
原文地址:代碼匯我的博客 http://www.codehui.net/info/23.htmlphp
通常狀況咱們寫數據分頁都是以下代碼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條,就不能用這種方法了。sql
//分頁碼 $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;