CodeIgniterのページネーションクラス

今日は、CodeIgniterのページネーションクラスを調べてみます。皆さんはページネーションという言葉をご存じでしょうか。googleをよくご利用の方ならおわかりと思いますが、検索ページの下の方に表示される複数のページ間を移動するためのリンクナビゲーションをページネーションと言います。

CodeIgniterのページネーションクラスは、この機能を簡単なコマンドで実施することができます。それでは、実際に見てみましょう。

以前『CodeIgniterでテーブルの一覧を表示する』で使用したデータを使用します。普通に表示してみます。

データ数はあまり多くありませんが、全部で13件のデータがあります。これを5件ごとに3ページに分けて表示してみたいと思います。

『dvd_list_view.php』ファイルのテーブルの下に、ページネーションを表示する下記のコードを追加します。

<?php echo $this->pagination->create_links();?>

続いて、コントローラの『dvd_list.php』ファイルを変更します。

コンストラクタにページネーションクラスを呼び込む下記のコードを追加します。

$this->load->library('pagination');

funciton index()に下記のコードを追加変更します。

$lm='5';
$of=$this->uri->segment(3);
$data['records']=$this->db->get('dvd',$lm,$of)->result_array();
$config['base_url']='http://ci.builwing.co.jp/dvd_list/index':
$config['total_rows']=$this->db->count_all_result('dvd');
$this->pagination->initialize($config);

コードの説明

簡単にコードの説明をします。まず、データベースのリミット値とオフセット値をあらかじめ変数として用意しておきます。リミット値は変数$lmに5を代入します。オフセット値には、変数$ofにURIクラスの第3引数を代入します。つまり、ページネーションがクリックされたときのURIの最後の数字です。言葉ではわかりづらいので、ブラウザに表示してみます。

オフセットとは、あるデータの位置を、基準点からの差(距離)で表した値のこと。「offset」は英語で「差し引き計算する」という意味で、そこから転じて、必要なデータの位置を基準点からの差(距離)で表した値のことをオフセットと呼んでいます。

ブラウザに『http://ci.builwing.co.jp/dvd_list』と入力すると、テーブルの下に、『1 2 3 >』と表示されました。

数字の2をクリックすると、ブラウザのアドレスが『http://ci.builwing.co.jp/dvd_list/index/5』と表示されているのがわかると思います。数字の3をクリックすると、ブラウザのアドレスが『http://ci.builwing.co.jp/dvd_list/index/10』と表示されて、3ページ目のデータが表示されます。

このように、CodeIgniteerのページネーションクラスは、デフォルトでは、指定した『base_url』にオフセット値を付加したURIを返す仕様になっています。

$config配列について

$config 配列は、ユーザ設定の変数を格納します。 20程度の項目を設定できますが、例のように、最低限下記の3つの設定項目が必要です。

  • base_url ページネーション処理が含まれるコントローラクラス/ メソッドへの完全なURLです。
  • total_rows この数字は、ページネーションで表示すべき結果セットの総行数をあらわします。 典型的には、この数字は、データベースクエリが返した総行数になります。
  • per_page 1ページあたりに表示したい件数。上の例では、1ページあたり5件を表示します。

この配列は、上で示すように $this->pagination->initialize メソッドに渡されます。

class属性の追加について

ページネーションクラスで生成される各 a タグに class 属性を追加したい場合は,config 配列の “anchor_class” により指定することができるみたいです。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ