php實(shí)現(xiàn)的仿阿里巴巴實(shí)現(xiàn)同類(lèi)產(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)同類(lèi)產(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)同類(lèi)產(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è)在底部
- 在圖片上顯示左右箭頭類(lèi)似翻頁(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無(wú)限級(jí)分類(lèi)實(shí)現(xiàn)方法分析
這篇文章主要介紹了php無(wú)限級(jí)分類(lèi)實(shí)現(xiàn)方法,結(jié)合2個(gè)簡(jiǎn)單實(shí)例形式分析了php通過(guò)遞歸與普通算法實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
php中類(lèi)和對(duì)象:靜態(tài)屬性、靜態(tài)方法
這篇文章主要介紹了php中類(lèi)和對(duì)象:靜態(tài)屬性、靜態(tài)方法,需要的朋友可以參考下2017-04-04
JSON字符串傳到后臺(tái)PHP處理問(wèn)題的解決方法
這篇文章主要介紹了JSON字符串傳到后臺(tái)PHP處理問(wèn)題的解決方法,需要的朋友可以參考下2016-06-06
PHP使用SOAP擴(kuò)展實(shí)現(xiàn)WebService的方法
這篇文章主要介紹了PHP使用SOAP擴(kuò)展實(shí)現(xiàn)WebService的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了SOAP擴(kuò)展的原理及實(shí)現(xiàn)WebService的相關(guān)技巧,需要的朋友可以參考下2016-04-04
PHP+APACHE實(shí)現(xiàn)網(wǎng)址偽靜態(tài)
這篇文章主要介紹了PHP+APACHE通過(guò)使用mod rewrite模塊實(shí)現(xiàn)網(wǎng)址偽靜態(tài)的相關(guān)資料,需要的朋友可以參考下2015-02-02

