通常在資料查詢後都會對資料集進行分頁操作,ThinkPHP也提供了分頁類來對資料分頁提供支援。 下面是資料分頁的兩種示例。
第一種:利用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(); // 輸出模闆
第二種:分頁類和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(); // 輸出模闆
帶入查詢條件
如果是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();// 分頁顯示輸出
分頁樣式定制
我們可以對輸出的分頁樣式進行定制,分頁類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(目前頁)。