欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
PEAR_Pager

PEAR_Pager

1. 前言

本文中,Hick 先介紹一下 PEAR 的 Pager 包。然后談?wù)劮猪?yè)的思路,再結合實(shí)際運用,最后對它的部分方法和屬性作一下介紹。

順便提一下, Smarty 也有分頁(yè)插件,比如 Smarty Pager ,不過(guò) Hick 看了一下,初步感覺(jué)在把問(wèn)題搞復雜化。

[聲明] 轉載請保留原文信息:

作者: hick<hick@163.com>出處: http://www.hickwu.com/doc/pearPager.htm

2. 安裝

如果已經(jīng)安裝好 PEAR 環(huán)境,常規的安裝 PEAR 包的方法就可以安裝最新版本:

php5>pear install Pager

之所以單獨說(shuō)一下安裝,其實(shí)是想說(shuō) Pager 包可以單獨使用,直接到官方下載到壓縮包,解壓縮到某目錄, 并把目錄名修改為 Pager, 最后把其父目錄添加到 inlcude_path 中即可。

注意:由于 linux 等環(huán)境下區分大小寫(xiě),不要修改目錄以及文件名等。

3. 簡(jiǎn)單實(shí)例

通常以靜態(tài)方法 factory 創(chuàng )建 Pager 類(lèi)的實(shí)例。創(chuàng )建實(shí)例時(shí),需要以數組的形式傳遞參數,每個(gè)數組的元素是一個(gè)參數。默認情況下必須有一個(gè)參數: itemData 或者 totalItems,參見(jiàn)下面的實(shí)例::

require_once("Pager/Pager.php");// 參數數組$params = array(// 分頁(yè)模式,有兩種顯示模式,Jumping 和 Sliding‘mode‘       => ‘Jumping‘,// 每頁(yè)記錄數‘perPage‘    => 3,// Jumping 模式下為可選頁(yè)數,Sliding 模式下為當前頁(yè)前后可選頁(yè)數‘delta‘      => 5,‘itemData‘   => array(‘record01‘,‘record02‘,‘record03‘,‘record04‘,‘record05‘,‘record06‘,‘record07‘,‘record08‘,‘record09‘,‘record10‘,‘record11‘,‘record12‘,‘record13‘,‘record14‘,‘record15‘,‘record15‘,‘record15‘,‘record16‘));// 創(chuàng  )建 Pager 對象$pager = Pager::factory($params);// 獲得當前頁(yè)(默認為第一頁(yè))的各種相關(guān)頁(yè)鏈接: 前一頁(yè);后一頁(yè);所有頁(yè)等等$links = $pager->getLinks();echo $links[‘a(chǎn)ll‘];

其中 itemData 元素是要分頁(yè)的數據,通常它也是一個(gè)多元數組。其他參數請參考 官方參考文檔

4. 應用案例

通過(guò)上面的 簡(jiǎn)單實(shí)例 的學(xué)習,會(huì )有這么一個(gè)想法:使用 PEAR Pager 來(lái)對一個(gè)新聞列表分頁(yè),可以把所有新聞的基本信息保存成一個(gè)二維數組作為 itemData ,其實(shí)還可以把新聞總數作為 totalItems 傳遞??紤]到當前頁(yè)一般只需要顯示若干條新聞,而不是全部,所以能夠只查詢(xún)出當前頁(yè)需要顯示的若干條當然更高效率。

這里順便說(shuō)一下兩種分頁(yè)的思路,一種是從數據庫查詢(xún)出所有記錄,然后選擇當前需要顯示的若干記錄;另外一種就是先算出當前頁(yè)需要顯示的記錄范圍,結合 mysql 的 limit 或者其他數據庫的類(lèi)似語(yǔ)法,查詢(xún)出當前需要顯示的若干記錄??瓷先ズ笳弑容^快,但是從數據庫查詢(xún)的角度來(lái)說(shuō),實(shí)現后一種方法往往需要進(jìn)行兩次查詢(xún)數據庫,第一次查詢(xún)總的記錄數,第二次查詢(xún)需要的若干條記錄。第一種查詢(xún)方法在處理記錄數多時(shí),會(huì )比較耗資源。一般來(lái)說(shuō),考慮到數據量的增加,用第二種方法會(huì )比較好。對查詢(xún)兩次數據庫的劣勢,可以通過(guò)在 URL 傳遞記錄總數進(jìn)行一定程度上的彌補(數據庫記錄變動(dòng)快時(shí)不太好)。

下面介紹一下應用 PEAR Pager 于使用了 Smarty (其實(shí)跟 Smarty 也沒(méi)什么關(guān)系,嘿嘿)的系統中的方法:

  1. 在獲得新聞?dòng)涗洉r(shí),使用類(lèi)封裝,通過(guò)方法 getList 的參數中 $limit 參數取得當前頁(yè)需要的新聞?dòng)涗浀姆秶?
  2. 如果當前 URL 中沒(méi)有傳遞總記錄數這個(gè)參數,則從數據庫查詢(xún)出總記錄數。由于獲得總記錄數的查詢(xún)條件(SQL 語(yǔ)句的 where 部分)跟 get_list 方法的查詢(xún)條件是一樣的,因此 Hick 的做法是在這個(gè)方法增加一個(gè)功能(參數),最后一個(gè)參數為引用傳遞,傳遞符合當前新聞列表條件的新聞總數。
  3. 根據新聞總數以及 URL 傳遞過(guò)來(lái)的當前頁(yè)等確定分頁(yè)器的相關(guān)參數。

下面的使用比較原始,還可以進(jìn)一步對 Pager 進(jìn)行封裝::

// 獲得總的新聞數$totalItems = $_GET[‘totalItems‘];// 每頁(yè)顯示的新聞數$pageSize = 10;// 當前頁(yè)編號$pageID = empty($_GET[‘pageID‘]) ? 1 : $_GET[‘pageID‘];// limit 子句$limit = ($pageID - 1) * $pageSize . ", $pageSize";// 獲得新聞列表$newsList = $news->get_list(‘latest‘, $limit, $totalItems);// 再對$_GET[‘totalItems‘]賦值,也是Pager自定義URL GET參數的方法$_GET[‘totalItems‘] = $totalItems;// 創(chuàng  )建 Pager 對象$params = array(‘mode‘ => ‘Sliding‘,‘perPage‘ => $pageSize,‘delta‘ => 2,‘totalItems‘ => $totalItems,);$pager = Pager::factory($params);// 獲得當前頁(yè)(默認為第一頁(yè))的各種相關(guān)頁(yè)鏈接$links = $pager->getLinks();// 模板賦值$tpl->assign("pager", $links);

注意:以上代碼修改自 Hick 在項目中實(shí)際應用的代碼,跟 Hick 在實(shí)際運用中有些不同。

5. 參數摘要

這里說(shuō)的參數主要是 Pager::factory 的參數,該函數的參數至少是 itemData 和 totalItem 中的一個(gè)。append 參數( 默認為 true)為 false 時(shí),還需要指定 fileName 參數。

itemData
用來(lái)分頁(yè)的數據記錄數組
totalItems
用來(lái)分頁(yè)的記錄總數
perPage
每頁(yè)顯示的記錄數
delta
分頁(yè)器當前頁(yè)的前后顯示的分頁(yè)鏈接數
mode
Jumping 和 Sliding 兩中分頁(yè)樣式
httpMethod
允許 GET 和 POST 方式傳遞分頁(yè)相關(guān)信息
currentPage
默認載入的頁(yè)
linkClass
分頁(yè)鏈接的 css 樣式
separator
分頁(yè)器之間的分隔符
spacesBeforeSeparator 和 spacesAfterSeparator
分隔符號前后的空格數
curPageLinkClassName
當前頁(yè)的 css 樣式名
useSessions
如果設置為 true ,則在 session 中保存每頁(yè)顯示的記錄數

6. 方法摘要

Pager::factory()
創(chuàng )建一個(gè)分頁(yè)器實(shí)例
Pager::getCurrentPageID()
當前頁(yè)編號
Pager::getLinks
獲得當前頁(yè)(默認為第一頁(yè))的各種相關(guān)頁(yè)鏈接: 前一頁(yè);后一頁(yè);所有頁(yè)等等的數組
Pager::getNextPageID
下一頁(yè)編號
Pager::getOffsetByPageId()
Returns offsets for given pageID.
Pager::getPageData()
以數組形式返回當前頁(yè)的記錄
Pager::getPageIdByOffset()
Returns the page number for the given offset
Pager::getPageRangeByPageId()
Returns offsets for given pageID.
Pager::getPreviousPageID()
返回前一頁(yè)編號
Pager::getperpageselectbox()
Returns a string with a XHTML SELECT menu, to choose how many items per page should be displayed.
Pager::isFirstPage()
當前頁(yè)是否第一頁(yè)
Pager::isLastPage()
當前頁(yè)是否最后一頁(yè)
Pager::isLastPageComplete()
最后一頁(yè)是否完整(complete)
Pager::numItems()
總共的記錄數
Pager::numPages()
返回總共的頁(yè)數
Pager::Pager()
同 factory

7. 后記

我喜歡總結自己的學(xué)習并整理成文檔. 開(kāi)始也只是想把自己學(xué)習 PEAR Pager 的經(jīng)驗總結一下, 留作以后備用. 弄完了, 感覺(jué)應該分享出來(lái). 既然要弄出來(lái)給別人看, 讀者就不一樣了, 需要考慮的就多了, 要分享出個(gè)東西來(lái)也不容易啊, 嘿嘿. 差不多是第一次比較正式的寫(xiě)這樣的東西, 感覺(jué)有點(diǎn)點(diǎn)麻煩, 以后要少考慮一點(diǎn).

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
PEAR探奇之PEAR::Pager [一] - Haohappy的專(zhuān)欄--PHP5研究中...
什么是PEAR?什么是PECL?PHP中兩個(gè)容易混淆的概念解釋
php中如何分頁(yè)顯示查詢(xún)數據結果
最好的PHP分頁(yè)類(lèi)
分頁(yè)標簽:pager
GridView支持分頁(yè)的自動(dòng)編號代碼
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久