Adodb 配合 PEAR Pager 分頁工具

PEAR pager It takes an array of data as input and pages it according to various parameters. It also builds links within a specified range, and allows complete customization of the output (it even works with front controllers and mod_rewrite). Two operating modes available: “Jumping” and “Sliding” window style. 參考資料: 快速分頁 - Pager

如下程式所示,他就會列出每 10 個 item 作一頁的效果了,實例可參考 pager.php。除了使用他內定的格式之外,也可以使用自定格式,可以參考下面所列的資料來判定要不要顯示翻頁的選項。

  • getCurrentPageID() : 目前頁面的 ID
  • getNextPageID() : 下一個頁面的 ID
  • getPreviousPageID() : 上一個頁面的 ID
  • numItems() : 總共有多少個物件
  • numPages() : 總共有多少頁
  • isFirstPage() : 是不是在第一頁
  • isLastPage() : 是不是在最後一頁
  • $pager->range : 頁面範圍,如 array(“1”=>0,“2”=>1,“3”=>0); 1,2,3 就代表頁面,其中 “2”=>1 代表是目前顯示的頁面。

範例如下:

Connect($server, $user, $pwd, $db); 
$sql1 = 'SELECT count(`id`) as total FROM `lt_articles`'; 
$rs = $DB->Execute($sql1); 
$total = $rs->FetchRow(); //取得資料總數 
$total = $total[0]; 
$params = array( 'mode' => 'Sliding', 'perPage' => 10, 'totalItems' => $total, 'delta' => 4, 'urlVar' => 'page', ); 
$pager = & Pager::factory($params); 
$offset = $pager->getOffsetByPageId($pager->getCurrentPageID()); 
$offset[0] -= 1; 
$sql2 = 'SELECT * FROM `lt_articles` LIMIT '.$offset[0].', '.$pager->_perPage; 
echo $pager->links; // 這樣子就會產生分頁所需要的連結,點選後的參數也會帶入資料庫查詢中, $rs = $DB->Execute($sql2); 
echo ""; 
while($articale = $rs->FetchRow()) { ?> 
    <?php } echo "

    "; ?>

getCurrentPageID()...: getCurrentPageID()); ?>
getNextPageID()......: getNextPageID()); ?>
getPreviousPageID()..: getPreviousPageID()); ?>
numItems()...........: numItems()); ?>
numPages()...........: numPages()); ?>
isFirstPage()........: isFirstPage()); ?>
isLastPage().........: isLastPage()); ?>
isLastPageComplete().: isLastPageComplete()); ?>
$pager->range........: range); ?>