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はどうしても使いたいです。よい方法はないですか??
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をお気に入りに入れておくと良いでしょう
windofjulyさん!いつもありがとうございます!とても参考になりました!できそうです!