ThinkPHP資料分頁Page.class.php_PHP教程

來源:互聯網
上載者:User

ThinkPHP資料分頁Page.class.php


擷取分頁類

ThinkPHP提供了資料分頁的擴充類庫Page,可以在http://www.thinkphp.cn/extend/241.html下載,或者下載官方的完整擴充包(http://www.thinkphp.cn/down/253.html)裡面也已經包含分頁擴充類了。把解壓後的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果沒有請手動建立)目錄下面。
當然,擴充類庫的位置其實比較隨意,你也可以放入項目的類庫目錄下面,區別只是在於你匯入路徑的不同而已。

分頁查詢

分頁類需要和查詢相結合,我們可以使用ThinkPHP內建的limit方法或者page方法,目的就是為了擷取當前分頁的資料(也有先擷取完整資料然後前端分頁顯示的方法,不在本文描述內容中,也不建議)。使用limit方法或者page方法是和資料庫類型無關的。

我們首先在資料庫裡面建立一個think_data資料表用於測試:

    CREATE TABLE IF NOT EXISTS `think_data` (      `id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,      `title` varchar(255) NOT NULL,      `content` varchar(255) NOT NULL,      `create_time` int(11) unsigned NOT NULL,      PRIMARY KEY (`id`)    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;


複製代碼要使用分頁查詢,一般來說需要進行兩次查詢,即第一次查詢得到滿足條件的總資料量,然後第二次查詢當前分頁的資料,這樣做的作用是告訴分頁類當前的資料總數,以便計算產生的總頁數(如果你的顯示只是需要上下翻頁的話,其實總數查詢可以省略或者進行緩衝)。

一個標準的分頁使用樣本如下:

    $Data = M('Data'); // 執行個體化Data資料對象    import('ORG.Util.Page');// 匯入分頁類    $count      = $Data->where($map)->count();// 查詢滿足要求的總記錄數 $map表示查詢條件    $Page       = new Page($count);// 執行個體化分頁類 傳入總記錄數    $show       = $Page->show();// 分頁顯示輸出    // 進行分頁資料查詢    $list = $Data->where($map)->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select();    $this->assign('list',$list);// 賦值資料集    $this->assign('page',$show);// 賦值分頁輸出    $this->display(); // 輸出模板


複製代碼

如果沒有任何資料的話,分頁顯示為空白。所以在進行測試之前,請確保你的資料表裡面有一定的資料,否則可能看不到分頁的效果。如果使用page方法查詢的話,則可以改成

    $Data = M('Data'); // 執行個體化Data資料對象    import('ORG.Util.Page');// 匯入分頁類    $count      = $Data->where($map)->count();// 查詢滿足要求的總記錄數    $Page       = new Page($count);// 執行個體化分頁類 傳入總記錄數    // 進行分頁資料查詢 注意page方法的參數的前面部分是當前的頁數使用 $_GET[p]擷取    $nowPage = isset($_GET['p'])?$_GET['p']:1;    $list = $Data->where($map)->order('create_time')->page($nowPage.','.$Page->listRows)->select();    $show       = $Page->show();// 分頁顯示輸出    $this->assign('page',$show);// 賦值分頁輸出    $this->assign('list',$list);// 賦值資料集    $this->display(); // 輸出模板



複製代碼

然後,我們在模板中添加分頁輸出變數即可


 
 
[ {$vo.create_time|date='Y-m-d H:i:s',###} ] {$vo.title}
{$page}



複製代碼可以看到分頁輸出只需要採用{$page}變數在模板中輸出即可。

分頁設定

設定分頁變數

預設情況下,分頁傳值的變數是p,產生的分頁跳轉地址可能類似於:
  1. http://serverName/index.php/Data/index/p/1
  2. http://serverName/index.php/Data/index/p/2複製代碼我們可以配置VAR_PAGE配置參數來改變:
    1. 'VAR_PAGE'=>'page'複製代碼則分頁地址變成:
      1. http://serverName/index.php/Data/index/page/1
      2. http://serverName/index.php/Data/index/page/1複製代碼

        設定每頁記錄數

        預設的情況下,分頁顯示每頁會顯示20條資料,如果你希望改變每頁顯示的資料量的話,執行個體化分頁類的時候可以傳人第二個參數即可:
        1. $Page = new Page($count,5);// 執行個體化分頁類 傳入總記錄數並且每頁顯示5條記錄複製代碼由於查詢方法中我們使用了$Page->listRows屬性,所以無需更改,但如果你是直接在查詢方法中使用數字請記得一起更改。
          下面是官方的分頁樣本的顯示效果:

          傳入分頁條件

          預設情況下,分頁類會自動擷取當前頁面的POST(優先)或者GET變數作為分頁跳轉的傳值,如果需要指定傳入當前分頁跳轉的參數,就可以通過設定parameter屬性,parameter屬性支援2種方式傳值:字串和數組。字串採用var1=val1&var2=val2...的格式,例如:
          1. foreach($map as $key=>$val) {
          2. $Page->parameter .= "$key=".urlencode($val).'&';
          3. }複製代碼或者直接傳入數組:
            1. $Page->parameter = array_map('urlencode',$map);複製代碼由於內部調用了U函數,分頁類最終產生的分頁跳轉連結會根據當前的URL設定自動產生和當前URL模式一致的地址,所以無需擔心分頁連結的參數影響URL地址。

              分頁路由支援

              如果你的分頁跳轉連結地址採用了路由,那麼可以通過設定url參數,例如,假設我們的分頁URL地址格式是:
              1. http://serverName/data/index/1
              2. http://serverName/data/index/2
              3. http://serverName/data/index/3複製代碼這樣的URL路由地址,那麼我們就可以設定
                1. $Page->url = 'data/index';複製代碼設定後,分頁類的連結地址會自動產生上面的URL格式地址。
                  注意,url參數和parameter 同時使用的話,後者無效。

                  設定顯示的頁數

                  可以在執行個體化分頁類之後,進行相關屬性的設定。預設情況下,頁面顯示的頁數是5,我們可以修改:
                  1. $Page->rollPage = 3;複製代碼這樣,頁面上只能同時看到3個分頁

                    分頁顯示定製

                    上面講的是分頁的參數設定,下面講下如何對分頁顯示效果(包括樣式)進行設定。預設的分頁效果可能不能滿足所有的要求,分頁類提供了一個setConfig方法來修改預設的一些設定。例如:
                    1. $page->setConfig('header','個會員');複製代碼setConfig方法支援的屬性包括:
                      header 頭部描述資訊,預設值 “條記錄”
                      prev 上一頁描述資訊,預設值是“上一頁”
                      next 下一頁描述資訊,預設值是“下一頁”
                      first 第一頁描述資訊,預設值是“第一頁”
                      last 最後一頁描述資訊,預設值是“最後一頁”
                      theme 分頁面主題描述資訊,包括了上面所有元素的組合 ,設定該屬性可以改變分頁的各個單元的顯示位置,預設值是
                      "%totalRow% %header% %nowPage%/%totalPage% 頁 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%"
                      通過setConfig設定以上屬性可以完美的定製出你的分頁顯示風格。

                      http://www.bkjia.com/PHPjc/847866.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/847866.htmlTechArticleThinkPHP資料分頁Page.class.php 擷取分頁類 ThinkPHP提供了資料分頁的擴充類庫Page,可以在http://www.thinkphp.cn/extend/241.html下載,或者下載官方的完...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.