PEAR::DBとPEAR::Pager使ってます


require_once("Pager.php");
$perPage=5;
$params=array(
"perPage"=>$perPage,
"itemData"=> $alldata,
"firstPagePre"=>"{", "firstPageText"=>"先頭","firstPagePost"=>"}",
"lastPagePre"=>"{", "lastPageText"=>"最後","lastPagePost"=>"}");
$o_page=Pager::factory($params);
print("<ul>");
foreach($o_page->getPageData() as $alldata){
print("<li>".$alldata."</li>");
}
print("</ul>");
$navi=$o_page->getLinks();
print($navi['all']);

$alldataには、PEAR::DBでの結果が連想配列で入っています。
なので、結果はarray()です。でもPEAR::DBはどうしても使いたいです。よい方法はないですか??

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/08/30 11:50:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント100pt

PEAR::DBではなくPEAR::MDB2ですが流れは同じなので下記参考にしてみてください

http://www.alberton.info/pear_pager_tutorial_database_results.ht...

<?php
require_once 'Pager/Pager.php';
require_once 'MDB2.php';

//skipped the db connection code...
//let's just suppose we have a valid db connection in $db.

//first, we use Pager to create the links
$num_products = $db->queryOne('SELECT COUNT(*) FROM products');
$pager_options = array(
    'mode'       => 'Sliding',
    'perPage'    => 10,
    'delta'      => 2,
    'totalItems' => $num_products,
);

$pager = Pager::factory($pager_options);

//then we fetch the relevant records for the current page
list($from, $to) = $pager->getOffsetByPageId();
//set the OFFSET and LIMIT clauses for the following query
$db->setLimit($pager_options['perPage'], $from - 1);
$query = 'SELECT prod_name, prod_description FROM products';
$products = $db->queryAll($query, null, MDB2_FETCHMODE_ASSOC);

//show the results
echo '<ul>';
foreach ($products as $product) {
    echo '<li>'.$product['prod_name'].': '.$product['prod_description'].'</li>';
}
echo '</ul>';

//show the links
echo $pager->links;

(1)該当するレコードの件数を数えてPager::factoryにセット

http://pear.php.net/manual/ja/package.database.db.db-common.geto...

(2)Limitで該当するレコード範囲を指定しつつデータベースからデータを取り出し

http://pear.php.net/manual/ja/package.database.db.db-common.limi...

http://pear.php.net/manual/ja/package.database.db.db-common.geta...

(3)foreachでデータを出力

(4)Linksを出力

 

下記URLをお気に入りに入れておくと良いでしょう

http://pear.php.net/manual/ja/package.database.db.php

http://pear.php.net/manual/ja/package.database.mdb2.php

id:goodbabies

windofjulyさん!いつもありがとうございます!とても参考になりました!できそうです!

2010/08/30 11:50:23

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません