Solarized
HOME > WEBプログラム覚書 > PEAR::Pagerを使ってみた 其1
PEAR::Pagerを使ってみた 其1
大量のデータを複数ページに分割して表示したい場合に便利だというPagerを使ってみた。
ページのナビはパラメータを設定してやればいいだけなので簡単だがデータ表示の部分は自分で作らないといけない。
パラメータを説明しているサイトは結構ありましたが、表示部分のサンプルがまったく無く初心者の自分は結構苦労しました。
肝は開始インデックスの求め方。普通の人なら簡単にわかるのでしょうが自分は大苦戦・・・
苦労の末、やたら長くわかりづらいコードを書いてしまいましたが、PEAR入門 PHP標準ライブラリを極める!
にとても素晴らしい開始インデックスの求め方が書いてありました。
開始インデックス=(ページID-1)*表示件数
上記を使って書き直したらかなりすっきりしました。
お隣の情報備忘録のRSSを5件ずつ表示するサンプル
PHP
- <?php
- class Rss_Display{
-
- var $all_num;
- var $title = array();
- var $link = array();
- var $description = array();
- var $author = array();
- var $category = array();
- var $pubDate = array();
-
-
- function Rss_Display()
- {
-
- require_once("XML/RSS.php");
-
-
- $rss = new XML_RSS("http://www.kantenna.com/info/index.xml");
-
-
- $rss->parse();
-
-
-
- $rss = $rss->getItems();
- $this->all_num = sizeof($rss);
- $i=0;
- for($i=0; $i<$this->all_num; $i++){
-
-
- $this->title[$i] = mb_convert_encoding(strip_tags($rss[$i]["title"]), $code);
- $this->link[$i] = htmlspecialchars($rss[$i]["link"]);
- $this->description[$i] = mb_convert_encoding(strip_tags($rss[$i]["description"]), $code);
- $this->author[$i] = mb_convert_encoding(strip_tags($rss[$i]["author"]), $code);
- $this->category[$i] = mb_convert_encoding(strip_tags($rss[$i]["category"]), $code);
- $this->pubDate[$i] = date("Y/m/d", strtotime($rss[$i]["pubdate"]));
-
- }
- }
- }
-
- require_once("Pager/Pager.php");
-
-
- $rss = new Rss_Display();
-
-
- $perPage = 5;
-
-
- $param = array(
- "perPage" => $perPage,
- "totalItems" => $rss->all_num,
- );
-
-
- $pager = Pager::factory($param);
-
-
- $navi = $pager->getLinks();
-
-
- $pID = $pager->getCurrentPageID();
-
-
- $index = ($pID - 1) * $perPage;
-
-
- for($i=$index; $i<$index+$perPage; $i++){
- echo "<dl>";
- print <<< RSS
- <dt class="pub">{$rss->pubDate[$i]}</dt>
- <dt><a href="{$rss->link[$i]}">{$rss->title[$i]}</a></dt>
- <dd>{$rss->description[$i]}</dd>
- RSS;
- echo "</dl>";
- }
-
-
- print($navi["all"]);
- ?>
※Rss_Display()はRSSフィードを要素ごとに配列で取得する自作クラス
実行結果
パラメータは他にも多数あるので、今度どんな値が返ってくるか試してみようかと思います。
| 投稿日 |
2007年5月30日 12:15 |
| カテゴリ |
PHP |
| タグ |
PEAR | サンプルコード | ライブラリ |
| トラックバック URL |
http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1073 |
2009年12月21日 01:58
PEAR::Calenderを利用して特定の日付からn日間表示続きを読む