in 程式小心得

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 "<table>";
    while($articale = $rs-&gt;FetchRow())
    {
        ?&gt;
        <tr>
        <td></td>
        <td></td>
        <td></td>
        </tr>&lt;?php
    }
    echo &quot;</table>";

?&gt;
 <pre>
getCurrentPageID()...: getCurrentPageID()); ?&gt;
getNextPageID()......: getNextPageID()); ?&gt;
getPreviousPageID()..: getPreviousPageID()); ?&gt;
numItems()...........: numItems()); ?&gt;
numPages()...........: numPages()); ?&gt;
isFirstPage()........: isFirstPage()); ?&gt;
isLastPage().........: isLastPage()); ?&gt;
isLastPageComplete().: isLastPageComplete()); ?&gt;
$pager-&gt;range........: range); ?&gt;
</pre>

Write a Comment

Comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料