Pager 2.4.7 (stable)
http://pear.php.net/package/Pager
googleの検索結果の「前へ」「次へ」ボタン、まさにあれが作成できます。
自力で実装してもさほど難しいものではありませんが、終端処理とか例外とか面倒な部分もありますし、既にあるものをわざわざ再発明することもないので積極的に使用しましょう。
pager.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
//適当な配列を作成してるだけ
$arr=array();
for($i=1;$i<1000;$i++){
$tmp=array(
'id'=>$i
,'md5'=>md5($i)
);
$arr[]=$tmp;
}
//Pear::Pager
require_once('Pager.php');
//ページャーのインスタンス
$params = array(
//SlidingまたはJumpingを指定
'mode' => 'Jumping'
//1ページあたりの件数
,'perPage' => 3
//前後に表示する件数
,'delta' => 10
//ページングするデータの配列
,'itemData' => $arr
);
$pager = Pager::factory($params);
//ページャーの状態について調べられる
//現在のページ
print($pager->getCurrentPageID().'<br />');
//全ページ数
print($pager->numPages().'<br />');
//現在のページのデータ
var_dump($pager->getPageData());
//リンクを作成
$links = $pager->getLinks();
//表示
//一個前に
print($links['back'].'<br />');
//一個後に
print($links['next'].'<br />');
//ページャを表示
print($links['pages'].'<br />');
//一番前に
print($links['first'].'<br />');
//一番後に
print($links['last'].'<br />');
//上記全部
print($links['all'].'<br />');
|
例ではよく使うオプションを指定していますが、factoryには他にも多数のオプションが用意されています。
http://pear.php.net/manual/ja/package.html.pager.factory.php
Pagerの便利なところとして、GETリクエストがあった場合、そのリクエストがPager::getLinks()で取得するリンクに自動的に追加されます。
たとえば上記のpager.phpにそのままアクセスした場合、ページャーのリンクは
pager.php?pageID=2
というふうに(勝手に)なりますが、
pager.php?hoge=fuga
というURLでアクセスした場合、ページャーのリンクは自動的に
pager.php?hoge=fuga&pageID=2
となります。
これにより、複数条件で検索等の面倒な処理も何も書かなくても行うことができてしまいます。
圧倒的に便利な機能です。
ただ、#でフラグメントに飛ばしたい等、手動でURLを変更したい場合はappend=falseにしてfileNameを自力で書かないといけなくなってしまうので面倒です。
そうするよりはgetLinksでリンクを取得した後に置換したほうが楽かと思います。
PR
トラックバック
トラックバックURL: