php实现的仿阿里巴巴实现同类产品翻页


Posted in PHP onDecember 11, 2009

如果左边的记录条数小于$space(页码区段)的值,页码$start从1开始向右增值。如果左则的记录条数多于$left(左右各显示页数)的值,$start将从左边记录数减去$left值开始记数。

<?php 
/** 实现同类产品翻页 **/ 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); 
/** 上一页链接 **/ 
$c = count($list1); 
if($c > 1) { 
$url = $this->pageName."-".$list1[$c]['id'].".html"; 
$pages = "<a href=\"{$url}\">上一页</a><ol>"; 
}elseif($c == 1) { 
$url = $this->pageName."-".$list1[0]['id'].".html"; 
$pages = "<a href=\"{$url}\">上一页</a><ol>"; 
}else { 
$pages = ""; 
} 

/** 当前页的左边内容 **/ 
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++; 
/** 当前页面右边的内容 **/ 
foreach($list1 as $item) { 
$url = $this->pageName."-".$item['id'].".html"; 
$pages .= "<li><a href=\"{$url}\">{$start}</a></li>"; 
$start++; 
} 
/** 下一页的链接 **/ 
$c = count($list2); 
if($c > 0) { 
$url = $this->pageName."-".$list2[0]['id'].".html"; 
$pages .= "<a href=\"{$url}\">下一页</a><ol>"; 
}else { 
$pages .= ""; 
} 
return $pages; 
} 
}; 
?>
PHP 相关文章推荐
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
PHP-redis中文文档介绍
Feb 07 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
WordPress过滤垃圾评论的几种主要方法小结
Jul 11 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
Aug 06 PHP
Laravel 类和接口注入相关的代码
Oct 15 PHP
Php Mssql操作简单封装支持存储过程
Dec 11 #PHP
php smarty模版引擎中变量操作符及使用方法
Dec 11 #PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 #PHP
php smarty模版引擎中的缓存应用
Dec 11 #PHP
php5 图片验证码实现代码
Dec 11 #PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 #PHP
一个比较简单的PHP 分页分组类
Dec 10 #PHP
You might like
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
JS 动态加载脚本的4种方法
2009/05/05 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
Angular封装表单控件及思想总结
2019/12/11 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
使用Python实现简单的服务器功能
2017/08/25 Python
简述Python2与Python3的不同点
2018/01/21 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
python实现拼接图片
2020/03/23 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
应用数学自荐书范文
2013/11/24 职场文书
医院办公室主任职责
2013/12/29 职场文书
群众路线剖析材料
2014/02/02 职场文书
征婚广告词
2014/03/17 职场文书
应聘教师求职信
2014/07/19 职场文书
金融保险专业求职信
2014/09/03 职场文书
党的群众路线调研报告
2014/11/03 职场文书
初中优秀学生评语
2014/12/29 职场文书
Python Parser的用法
2021/05/12 Python
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
python中对列表的删除和添加方法详解
2022/02/24 Python