ホームページ > バックエンド開発 > PHPチュートリアル > ThinkPHP データ pagingPage.class.php

ThinkPHP データ pagingPage.class.php

WBOY
リリース: 2016-06-23 13:54:19
オリジナル
816 人が閲覧しました

ページング クラスを取得する

ThinkPHP は、データ ページング用の拡張クラス ライブラリ Page を提供しています。これは http://www.thinkphp.cn/extend/241.html からダウンロードするか、公式の完全な拡張パッケージ (http: //www.thinkphp.cn/down/253.html) には、ページング拡張クラスも含まれています。解凍した Page.class.php を ThinkPHP/Extend/Library/ORG/Util/ ディレクトリー (存在しない場合は手動で作成してください) に配置します。
もちろん、拡張クラス ライブラリの場所は実際にはより任意であり、プロジェクトのクラス ライブラリ ディレクトリに置くこともできます。違いはインポート パスにあります。

ページング クエリ

ページング クラスはクエリと組み合わせる必要があります。目的は、現在のページング データを取得することです (完全なページング データを取得する方法もあります)。最初にデータを取得してからページングのフロントエンドに表示する方法ですが、これはこの記事には含まれていません) 説明でも推奨されていません)。制限メソッドまたはページメソッドの使用は、データベースの種類とは関係ありません。

まず、テスト用にデータベースに 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 ;
ログイン後にコピー


コードをコピー

ページング クエリを使用するには、一般的に 2 つのクエリが必要です。つまり、最初のクエリは条件を満たすデータの総量を取得し、現在のページング データを 2 度目にクエリします。この目的は、生成されるページの総数を計算できるように、ページング クラスに現在のデータの総数を伝えることです。表示はページを上下に移動するだけで済みます。実際、合計クエリは省略またはキャッシュできます)。

標準的なページネーションの使用例は次のとおりです。

    $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(); // 输出模板
ログイン後にコピー


コードをコピー

データがない場合、ページネーションは空白で表示されます。したがって、テストする前に、データ テーブルに特定のデータがあることを確認してください。そうしないと、ページング効果が見られない可能性があります。ページ メソッドを使用してクエリを実行する場合は、それを

    $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(); // 输出模板
ログイン後にコピー



に変更できます。コードをコピーします

次に、テンプレートにページング出力変数を追加できます


<table cellpadding=3 cellspacing=5> <volist name="list" id="vo"> <tr> <td >[ {$vo.create_time|date='Y-m-d H:i:s',###} ] {$vo.title} </td> </tr> </volist> <tr>         </tr> </table> <div class="result page">{$page}</div>
ログイン後にコピー



コードをコピーします

ページング出力では、テンプレートで出力するために {$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

コードをコピー

ページあたりのレコード数を設定します

デフォルトでは、ページング表示では 1 ページあたり 20 個のデータが表示されます。各ページに表示されるデータの量を変更することができます。ページング クラスをインスタンス化します。 2 番目のパラメーターを渡すだけです:
  1. $Page = new Page($count,5) // ページング クラスをインスタンス化して、ページごとに 5 つのレコードを表示します。コード

クエリによるもの メソッド内で $Page->listRows 属性を使用しているので変更する必要はありませんが、クエリメソッド内で直接数値を使用する場合は忘れずに一緒に変更してください。

以下は、公式ページング例の表示効果です:

受信ページング条件
デフォルトでは、ページング クラスは、ページング ジャンプの渡された値として、現在のページの POST (優先度) または GET 変数を自動的に取得します。現在のページ ジャンプのパラメータは、parameter 属性を設定することで設定できます。parameter 属性は、文字列と配列という 2 つの値の受け渡し方法をサポートしています。この文字列は、var1=val1&var2=val2... の形式を採用します。例:

foreach($map as $key=>$val) {

    $Page->parameter .= "$key="。 urlencode( $val).'&';
  1. }
  2. コードをコピー

または、配列を直接渡します:

$Page->parameter = array_map('urlencode',$map);

  1. コードをコピー

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-> 'data/index';

コードをコピー

設定後、ページングクラスのリンクアドレスは上記のURL形式のアドレスを自動生成します。
urlパラメータとパラメータを同時に使用した場合、後者は無効となることに注意してください。

表示されるページ数を設定します

ページング クラスをインスタンス化した後、関連するプロパティを設定できます。デフォルトでは、ページに表示されるページ数は 5 ですが、これを変更できます:
  1. $Page->rollPage = 3;

コードをコピーします

この方法では、3 ページネーションのみが表示されます。

ページング表示のカスタマイズ

上記はページングのパラメータ設定について説明しました。 次に、ページング表示効果 (スタイルを含む) を設定する方法について説明します。デフォルトのページング効果は、すべての要件を満たしていない場合があります。ページング クラスには、一部のデフォルト設定を変更するための setConfig メソッドが用意されています。例:
  1. $page->setConfig('header','members');

コードをコピー

setConfig メソッドでサポートされる属性には次のものが含まれます:
header ヘッダーの説明情報、デフォルト値 "レコード"
prev 前のページの説明情報、デフォルト値は「前のページ」
next 次のページの説明情報、デフォルト値は「次のページ」
first 最初のページの説明情報、デフォルト値は「最初のページ」です
last 最後のページの説明情報、デフォルト値は「最後のページ」です
theme 上記のすべての要素の組み合わせを含むページング テーマの説明情報。この属性を設定すると、ページングの各単位の表示位置が変更されます。デフォルト値は
"%totalRow% %header% %nowPage%/%" です。 totalPage% Page %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%"
setConfig を通じて上記のプロパティを設定すると、ページングの表示スタイルを完全にカスタマイズできます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート