php實(shí)現(xiàn)的仿阿里巴巴實(shí)現(xiàn)同類產(chǎn)品翻頁(yè)
更新時(shí)間:2009年12月11日 17:43:46 作者:
當(dāng)前頁(yè)左邊的頁(yè)碼為最新的產(chǎn)品,按更新時(shí)間呈升序排列;右邊的頁(yè)碼為早期的產(chǎn)品, 按更新時(shí)間呈降序排列。
如果左邊的記錄條數(shù)小于$space(頁(yè)碼區(qū)段)的值,頁(yè)碼$start從1開(kāi)始向右增值。如果左則的記錄條數(shù)多于$left(左右各顯示頁(yè)數(shù))的值,$start將從左邊記錄數(shù)減去$left值開(kāi)始記數(shù)。
<?php
/** 實(shí)現(xiàn)同類產(chǎn)品翻頁(yè) **/
class pager
{
protected $space;
protected $left;
protected $DB;
protected $pageName;
public function setSpace($num) {
$this->space = $num;
$this->left = ceil(($num-1)/2);
}
public function setDB(&$db) {
$this->DB = $db;
}
public function setPageName($pageName) {
$this->pageName = $pageName;
}
public function getPages($catid, $exptime) {
$fields = array("`id`,`title`");
$left = array(">" => array("exptime"=>$exptime), "memberid" => gs(_MEM_PREFIX_ . "memberid"), "catid"=>$catid);
$right = array("<" => array("exptime"=>$exptime), "memberid" => gs(_MEM_PREFIX_ . "memberid"), "catid"=>$catid);
$leftCount = $this->DB->getCount($left);
if($leftCount <= $this->left) {
$star = 1;
$leftLimit = "LIMIT" . $leftCount;
$rightLimit = "LIMIT " . ($this->space-$leftCount);
}
else {
$start = $leftCount - $this->left;
$leftLimit = "LIMIT " . $this->left;
$rightLimit = $leftLimit;
}
$list1 = $this->DB->findAll($left, array("exptime"=>"ASC"), $leftLimit, $fields);
$list2 = $this->DB->findAll($right, array("exptime"=>"DESC"), $rightLimit, $fields);
/** 上一頁(yè)鏈接 **/
$c = count($list1);
if($c > 1) {
$url = $this->pageName."-".$list1[$c]['id'].".html";
$pages = "<a href=\"{$url}\">上一頁(yè)</a><ol>";
}elseif($c == 1) {
$url = $this->pageName."-".$list1[0]['id'].".html";
$pages = "<a href=\"{$url}\">上一頁(yè)</a><ol>";
}else {
$pages = "";
}
/** 當(dāng)前頁(yè)的左邊內(nèi)容 **/
foreach($list1 as $item) {
$url = $this->pageName."-".$item['id'].".html";
$pages .= "<li><a href=\"{$url}\">{$start}</a></li>";
$start++;
}
$pages .= "<li><b>{$leftCount}</b></li>";
$start++;
/** 當(dāng)前頁(yè)面右邊的內(nèi)容 **/
foreach($list1 as $item) {
$url = $this->pageName."-".$item['id'].".html";
$pages .= "<li><a href=\"{$url}\">{$start}</a></li>";
$start++;
}
/** 下一頁(yè)的鏈接 **/
$c = count($list2);
if($c > 0) {
$url = $this->pageName."-".$list2[0]['id'].".html";
$pages .= "<a href=\"{$url}\">下一頁(yè)</a><ol>";
}else {
$pages .= "";
}
return $pages;
}
};
?>
復(fù)制代碼 代碼如下:
<?php
/** 實(shí)現(xiàn)同類產(chǎn)品翻頁(yè) **/
class pager
{
protected $space;
protected $left;
protected $DB;
protected $pageName;
public function setSpace($num) {
$this->space = $num;
$this->left = ceil(($num-1)/2);
}
public function setDB(&$db) {
$this->DB = $db;
}
public function setPageName($pageName) {
$this->pageName = $pageName;
}
public function getPages($catid, $exptime) {
$fields = array("`id`,`title`");
$left = array(">" => array("exptime"=>$exptime), "memberid" => gs(_MEM_PREFIX_ . "memberid"), "catid"=>$catid);
$right = array("<" => array("exptime"=>$exptime), "memberid" => gs(_MEM_PREFIX_ . "memberid"), "catid"=>$catid);
$leftCount = $this->DB->getCount($left);
if($leftCount <= $this->left) {
$star = 1;
$leftLimit = "LIMIT" . $leftCount;
$rightLimit = "LIMIT " . ($this->space-$leftCount);
}
else {
$start = $leftCount - $this->left;
$leftLimit = "LIMIT " . $this->left;
$rightLimit = $leftLimit;
}
$list1 = $this->DB->findAll($left, array("exptime"=>"ASC"), $leftLimit, $fields);
$list2 = $this->DB->findAll($right, array("exptime"=>"DESC"), $rightLimit, $fields);
/** 上一頁(yè)鏈接 **/
$c = count($list1);
if($c > 1) {
$url = $this->pageName."-".$list1[$c]['id'].".html";
$pages = "<a href=\"{$url}\">上一頁(yè)</a><ol>";
}elseif($c == 1) {
$url = $this->pageName."-".$list1[0]['id'].".html";
$pages = "<a href=\"{$url}\">上一頁(yè)</a><ol>";
}else {
$pages = "";
}
/** 當(dāng)前頁(yè)的左邊內(nèi)容 **/
foreach($list1 as $item) {
$url = $this->pageName."-".$item['id'].".html";
$pages .= "<li><a href=\"{$url}\">{$start}</a></li>";
$start++;
}
$pages .= "<li><b>{$leftCount}</b></li>";
$start++;
/** 當(dāng)前頁(yè)面右邊的內(nèi)容 **/
foreach($list1 as $item) {
$url = $this->pageName."-".$item['id'].".html";
$pages .= "<li><a href=\"{$url}\">{$start}</a></li>";
$start++;
}
/** 下一頁(yè)的鏈接 **/
$c = count($list2);
if($c > 0) {
$url = $this->pageName."-".$list2[0]['id'].".html";
$pages .= "<a href=\"{$url}\">下一頁(yè)</a><ol>";
}else {
$pages .= "";
}
return $pages;
}
};
?>
您可能感興趣的文章:
- php中文本數(shù)據(jù)翻頁(yè)(留言本翻頁(yè))
- 如何編寫(xiě)翻頁(yè)函數(shù)?
- 點(diǎn)圖片上一頁(yè)下一頁(yè)翻頁(yè)效果
- PHP 翻頁(yè) 實(shí)例代碼
- PHP 長(zhǎng)文章分頁(yè)函數(shù) 帶使用方法,不會(huì)分割段落,翻頁(yè)在底部
- 在圖片上顯示左右箭頭類似翻頁(yè)的代碼
- 解析Android中實(shí)現(xiàn)滑動(dòng)翻頁(yè)之ViewFlipper的使用詳解
- 通過(guò)MySQL優(yōu)化Discuz!的熱帖翻頁(yè)的技巧
- PHP翻頁(yè)跳轉(zhuǎn)功能實(shí)現(xiàn)方法
- MongoDB快速翻頁(yè)的方法
相關(guān)文章
使用PHP實(shí)現(xiàn)RESTful API的常見(jiàn)問(wèn)題與解決方案
RESTful API是一種基于HTTP協(xié)議的架構(gòu)風(fēng)格,廣泛應(yīng)用于現(xiàn)代Web服務(wù)和移動(dòng)應(yīng)用開(kāi)發(fā)中,但在開(kāi)發(fā)過(guò)程中開(kāi)發(fā)者可能會(huì)遇到一些常見(jiàn)問(wèn)題,下面小編為大家提供一下相應(yīng)問(wèn)題的解決方案吧2025-03-03
詳解PHP多個(gè)進(jìn)程配合redis的有序集合實(shí)現(xiàn)大文件去重
這篇文章主要介紹了PHP多個(gè)進(jìn)程配合redis的有序集合實(shí)現(xiàn)大文件去重,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí) 吧2019-03-03
PHP腳本設(shè)置無(wú)限執(zhí)行時(shí)間的四種方法
為 PHP 腳本設(shè)置無(wú)限執(zhí)行時(shí)間是一個(gè)在特定場(chǎng)景下可能需要的操作,比如執(zhí)行長(zhǎng)時(shí)間運(yùn)行的后臺(tái)任務(wù)、數(shù)據(jù)遷移、大批量數(shù)據(jù)處理等,本文給大家介紹了為PHP腳本設(shè)置無(wú)限執(zhí)行時(shí)間的四種方法,需要的朋友可以參考下2024-09-09
php實(shí)現(xiàn)讀取手機(jī)客戶端瀏覽器的類
這篇文章主要介紹了php實(shí)現(xiàn)讀取手機(jī)客戶端瀏覽器的類,可實(shí)現(xiàn)取手機(jī)號(hào)碼,瀏覽器報(bào)頭信息,取得手機(jī)類型,取得手機(jī)IP等功能,需要的朋友可以參考下2015-01-01
PHP7擴(kuò)展開(kāi)發(fā)之基于函數(shù)方式使用lib庫(kù)的方法詳解
這篇文章主要介紹了PHP7擴(kuò)展開(kāi)發(fā)之基于函數(shù)方式使用lib庫(kù)的方法,結(jié)合實(shí)例形式分析了PHP7中l(wèi)ib庫(kù)擴(kuò)展的封裝與調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2018-01-01

