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 代表是目前顯示的頁面。

範例如下:

下载: pager.php
  1. <?php
  2.     include('adodb/adodb.inc.php');
  3.     require_once 'Pager/Pager.php';
  4.     $server = "127.0.0.1";
  5.     $user = "":
  6.     $pwd = "";
  7.     $db = "";
  8.    
  9.     $DB = NewADOConnection('mysql');
  10.     $DB->Connect($server, $user, $pwd, $db);
  11.    
  12.     $sql1 = 'SELECT count(`id`) as total FROM `lt_articles`';
  13.     $rs = $DB->Execute($sql1);
  14.     $total = $rs->FetchRow(); //取得資料總數
  15.     $total = $total[0];
  16.     $params = array(
  17.         'mode'       => 'Sliding',
  18.         'perPage'    => 10,
  19.         'totalItems' => $total,
  20.         'delta'      => 4,
  21.         'urlVar'     => 'page',
  22.     );
  23.     $pager = & Pager::factory($params);
  24.     $offset = $pager->getOffsetByPageId($pager->getCurrentPageID());
  25.     $offset[0] -= 1;
  26.     $sql2 = 'SELECT * FROM `lt_articles` LIMIT '.$offset[0].', '.$pager->_perPage;
  27.     echo $pager->links; // 這樣子就會產生分頁所需要的連結,點選後的參數也會帶入資料庫查詢中,
  28.  
  29.     $rs = $DB->Execute($sql2);
  30.     echo "<table>";
  31.     while($articale = $rs->FetchRow())
  32.     {
  33.         ?>
  34.         <tr>
  35.         <td><?php echo $articale['id']?></td>
  36.         <td><?php echo $articale['date']?></td>
  37.         <td><?php echo $articale['user_id']?></td>
  38.         </tr><?php
  39.     }
  40.     echo "</table>";
  41.  
  42. ?>
  43. <pre>
  44. getCurrentPageID()...: <?php var_dump($pager->getCurrentPageID()); ?>
  45. getNextPageID()......: <?php var_dump($pager->getNextPageID()); ?>
  46. getPreviousPageID()..: <?php var_dump($pager->getPreviousPageID()); ?>
  47. numItems()...........: <?php var_dump($pager->numItems()); ?>
  48. numPages()...........: <?php var_dump($pager->numPages()); ?>
  49. isFirstPage()........: <?php var_dump($pager->isFirstPage()); ?>
  50. isLastPage().........: <?php var_dump($pager->isLastPage()); ?>
  51. isLastPageComplete().: <?php var_dump($pager->isLastPageComplete()); ?>
  52. $pager->range........: <?php var_dump($pager->range); ?>
  53. </pre>

 

google adsense