ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP データ pagingPage.class.php
まず、テスト用にデータベースに 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} 変数を使用するだけでよいことがわかります。
コードをコピー
VAR_PAGE 構成パラメータを変更するように構成できます:
コード
をコピーすると、ページング アドレスは次のようになります:
コードをコピー
クエリによるもの メソッド内で $Page->listRows 属性を使用しているので変更する必要はありませんが、クエリメソッド内で直接数値を使用する場合は忘れずに一緒に変更してください。
以下は、公式ページング例の表示効果です:受信ページング条件
または、配列を直接渡します:
$Page->parameter = array_map('urlencode',$map);
U 関数は内部で呼び出されるため、ページング クラスによって最終的に生成されるページング ジャンプ リンクは、現在の URL 設定に基づいて現在の URL パターンと一致するアドレスを自動的に生成するため、ページング リンクのパラメータを心配する必要はありません。 URL アドレスに影響します。
コードをコピーします
このような URL ルーティング アドレスを設定するには、
コードをコピー
設定後、ページングクラスのリンクアドレスは上記のURL形式のアドレスを自動生成します。
コードをコピーします
この方法では、3 ページネーションのみが表示されます。
コードをコピー
setConfig メソッドでサポートされる属性には次のものが含まれます:
header | ヘッダーの説明情報、デフォルト値 "レコード" |
prev | 前のページの説明情報、デフォルト値は「前のページ」 |
next | 次のページの説明情報、デフォルト値は「次のページ」 |
first | 最初のページの説明情報、デフォルト値は「最初のページ」です |
last | 最後のページの説明情報、デフォルト値は「最後のページ」です |
theme | 上記のすべての要素の組み合わせを含むページング テーマの説明情報。この属性を設定すると、ページングの各単位の表示位置が変更されます。デフォルト値は "%totalRow% %header% %nowPage%/%" です。 totalPage% Page %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%" |