后台
1.利用Page類和limit方法分頁
$User = M('User'); // 實例化User對象 $count = $User->where('status=1')->count();// 查詢滿足要求的總記錄數 $Page = new \Think\Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數(25) $show = $Page->show();// 分頁顯示輸出 // 進行分頁數據查詢 注意limit方法的參數要使用Page類的屬性 $list = $User->where('status=1')->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select(); $this->assign('list',$list);// 賦值數據集 $this->assign('page',$show);// 賦值分頁輸出 $this->display(); // 輸出模板
2.分頁類和page方法的實現分頁
$User = M('User'); // 實例化User對象 // 進行分頁數據查詢 注意page方法的參數的前面部分是當前的頁數使用 $_GET[p]獲取 $list = $User->where('status=1')->order('create_time')->page($_GET['p'].',25')->select(); $this->assign('list',$list);// 賦值數據集 $count = $User->where('status=1')->count();// 查詢滿足要求的總記錄數 $Page = new \Think\Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數 $show = $Page->show();// 分頁顯示輸出 $this->assign('page',$show);// 賦值分頁輸出 $this->display(); // 輸出模板
3.帶入查詢條件
如果是POST方式查詢,如何確保分頁之后能夠保持原先的查詢條件呢,我們可以給分頁類傳入參數,方法是給分頁類的parameter屬性賦值
$count = $User->where($map)->count();// 查詢滿足要求的總記錄數 $Page = new \Think\Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數 //分頁跳轉的時候保證查詢條件 foreach($map as $key=>$val) { $Page->parameter[$key] = urlencode($val); } $show = $Page->show();// 分頁顯示輸出
4.分頁信息定制
我們可以對輸出的分頁樣式進行定制,分頁類Page提供了一個setConfig方法來修改默認的一些設置。例如:
$Page->setConfig('header','個會員');
setConfig方法支持的屬性包括:
屬性 | 描述 |
---|---|
header | 頭部描述信息,默認值 “共 %TOTAL_ROW% 條記錄” |
prev | 上一頁描述信息,默認值 “<<” |
next | 下一頁描述信息,默認值 “>>” |
first | 第一頁描述信息,默認值 “1…” |
last | 最后一頁描述信息,默認值 “…%TOTAL_PAGE%” |
theme | 分頁主題描述信息,包括了上面所有元素的組合 ,設置該屬性可以改變分頁的各個單元的顯示位置,默認值是 “%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%” |
其中,顯示位置的對應的關系為:
位置 | 說明 |
---|---|
%FIRST% | 表示第一頁的鏈接顯示 |
%UP_PAGE% | 表示上一頁的鏈接顯示 |
%LINK_PAGE% | 表示分頁的鏈接顯示 |
%DOWN_PAGE% | 表示下一頁的鏈接顯示 |
%END% | 表示最后一頁的鏈接顯示 |
除了改變顯示信息外,你還可以使用樣式來定義分頁的顯示效果。 這些樣式class包括:first(第一頁)、prev(上一頁)、next(下一頁)、end(最后一頁)、num(其他頁的數字)、current(當前頁)。
如果想增加分頁信息,在實例化配置類后,調用show()方法分頁顯示輸出之前加入如下代碼即可:
$Page->lastSuffix=false; $Page->setConfig('header','<li class="rows">共<b>%TOTAL_ROW%</b>條記錄 每頁<b>%LIST_ROW%</b>條 第<b>%NOW_PAGE%</b>頁/共<b>%TOTAL_PAGE%</b>頁</li>'); $Page->setConfig('prev','上一頁'); $Page->setConfig('next','下一頁'); $Page->setConfig('last','末頁'); $Page->setConfig('first','首頁'); $Page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
注:如果總分頁數(即查出來的數據分頁后的最大頁數的數字)小於分頁欄每頁顯示的頁數(在page類中定義的全局變量 $rollPage 的值),則首頁和末頁不會顯示出來(注:此處為顯示效果改成了1,即分頁數大於就會顯示首頁尾頁。如果總分頁數為1則什么分頁信息都沒有)
public $rollPage = 1;// 分頁欄每頁顯示的頁數
5.分頁樣式定制
<style> .pager span { background: #8FC41F; color: #fff; border: 1px solid #8FC41F; padding: 3px 10px; margin-left: 8px; } .pager a { border: 1px solid #666666; padding: 3px 10px; margin-left: 8px; text-decoration: none; color: #333; outline: none; } </style>
前台:
<style> .pager span { background: #8FC41F; color: #fff; border: 1px solid #8FC41F; padding: 3px 10px; margin-left: 8px; } .pager a { border: 1px solid #666666; padding: 3px 10px; margin-left: 8px; text-decoration: none; color: #333; outline: none; } </style>
前台:
<ul class="paginList pager"><!-- 分頁顯示 -->{$page}</ul>
效果: