2690

CodeIgniterでページネーション

CodeIgniterでページネーション

2012.12.31

基本的には「ページネーションクラス : CodeIgniter ユーザガイド 日本語版」の内容に近いのですが、1点記述不足でつまづいた箇所があったので、その記述を忘れないようにするためにメモ。

確認環境

controller

コントローラーに以下のように記述します。(わかりやすさを優先して、データ処理部分をModelに移動していません。ご了承ください。)

function class名()
{
    $data = array();
//ページネーションに必要な設定を行う
$config['base_url'] = 'http://localhost/class名/function名/'; //ベースURL
$config['total_rows'] = $this->db->get('DBテーブル名')->num_rows(); //記事総数  
$config['per_page'] = 10; //1ページあたりに表示したい件数
$config['num_links'] = 3; //表示しているページを基準に、番号の両端にいくつの数字を表示したいか

//config設定を元に、イニシャライズ
$this->pagination->initialize($config);

//ページネーション対象の記事を取得して変数へ
//カッコの中は(DBテーブル名, 1ページあたりに表示したい件数, 現在のページ(セグメントを取得))
$data['row'] = $this->db->get( 'DBテーブル名', $config['per_page'], $this->uri->segment(3) )->result();

//dataを持ってviewへ
$this->load->view('home', $data);

}

ポイントはコメントの「//ページネーション対象の記事を取得して変数へ」という箇所。公式マニュアルには、これが記述されていなかったので悩みました。

view

ページネーションを表示したい箇所へ以下を記述します。

pagination->create_links(); ?>

疑問点

ルーティングでURLの飛び先を変更していると、ページ遷移はするけど、ページネーションの現在地が移動しないといった、よく分からない状況になっています。URLはindex.phpの削除以外は余計なことはしない方がいいのかもしれませんね。

参考