一个比较简单的PHP 分页分组类


Posted in PHP onDecember 10, 2009
<?php 
class mysqlPager{ 
var $pagePerNum=5;//每页显示数据项数 
var $pagePerGroup=5;//每分页组中页数 
var $curPage=0;//当前页,Defualt 第一页 
var $totalPage=0;//总页数 
var $totalNum=0;//数据项总数 
var $curPageGroup=0;//当前分页组 
var $curPageUrl="";//当前用到分页的 URL 
var $customStyle="";//自定义风格 
var $pageQuerySql=""; 
function mysqlPager(){//构造函数 PHP4 
} 
/** 
* 初始化所有变量 
*/ 
function InitAllVar($totalNum,$pagePerGroup,$curPageUrl,$curPage=1,$curPageGroup=1) 
{ 
$this->totalNum=$totalNum; 
$this->pagePerGroup=$pagePerGroup; 
$this->curPageUrl=$curPageUrl; 
$this->curPage=$curPage; 
$this->curPageGroup=$curPageGroup; 
} 
/** 
* 设置当前页变量 
* 
* @param 数字 $curPage 
*/ 
function setCurPage($curPage) 
{ 
$this->curPage=$curPage; 
} 
/** 
* 设置当前分页组变量 
* 
* @param mixed $curPageGroup 
*/ 
function setCurPageGroup($curPageGroup) 
{ 
$this->curPageGroup=$curPageGroup; 
} 
/** 
* 设置当前用到分布类的URL 
* $curPageUrl string 
*/ 
function setCurPageUrl($curPageUrl) 
{ 
$this->curPageUrl=$curPageUrl; 
} 
/** 
* 获取所有 
* 
* @param 数字 $totalNum 
* @param 数字 $curPage 
* @return float 
*/ 
function getTotalPage($totalNum,$curPage=0) 
{ 
return $this->totalPage=ceil($totalNum/$this->pagePerNum); 
} 
/** 
* 设置用户自定义风格 
* 
* @param mixed $customStyle 
*/ 
function setCustomStyle($customStyle) 
{ 
$this->customStyle=$customStyle; 
} 
/** 
* 设置用户自定义风格返回字符串 
* 
* 
* @param mixed $pagerString 
*/ 
function setCustomStyleString($pagerString) 
{ 
return $styleString="<span class=".$customStyle.">".$pagerString."</span>"; 
} 
/** 
* 输出导航页信息 可以不用参数,但是在使用前一定要设置相应的变量 
* 
* @param mixed $curPageGroup 
* @param mixed $curPage 
* @param mixed $curPageUrl 
*/ 
function showNavPager($curPageGroup=0,$curPage=0,$curPageUrl=0) 
{ 
if($curPageGroup) 
{ 
$this->curPageGroup=$curPageGroup; 
} 
if($curPage) 
{ 
$this->curPage=$curPage; 
} 
if($curPageUrl) 
{ 
$this->curPageUrl=$curPageUrl; 
} 
$rtnString=""; 
//判断变量是否以经初始化 
if($this->curPageGroup && $this->curPageUrl && $this->totalNum && $this->curPage) 
{ 
$this->totalPage=$this->getTotalPage($this->totalNum); 
if($this->curPage==1) 
$this->curPage=($this->curPageGroup-1)*$this->pagePerGroup+1; 
if($this->curPageGroup!=1) 
{ 
$prePageGroup=$this->curPageGroup-1; 
$rtnString.="<a href=".$this->curPageUrl."?cpg=$prePageGroup >".$this->setCustomStyleString("<<")."</a> "; 
} 
for($i=1;$i<=$this->pagePerGroup;$i++) 
{ 
$curPageNum=($this->curPageGroup-1)*$this->pagePerGroup+$i; 
if($curPageNum<=$this->totalPage){ 
if($curPageNum==$this->curPage) 
{ 
$rtnString.=" ".$this->setCustomStyleString($curPageNum); 
}else 
{ 
$rtnString.=" <a href=$this->curPageUrl?cpg={$this->curPageGroup}&cp=$curPageNum >"; 
$rtnString.=$this->setCustomStyleString($curPageNum)."</a>"; 
} 
} 
} 
if($this->curPageGroup<ceil($this->totalPage/$this->pagePerGroup)-1) 
{ 
$nextPageGroup=$this->curPageGroup+1; 
$rtnString.=" <a href=$this->curPageUrl?cpg=$nextPageGroup >".$this->setCustomStyleString(">>")."</a>"; 
} 
$this->pageQuerySql=" limit ".(($this->curPage-1)*$this->pagePerNum).",".$this->pagePerNum; } 
else 
{ 
$rtnString="错误:变量未初始化!"; 
} 
return $rtnString; 
} 
/** 
* 得到完整的查询MYSQL的Sql语句 
* 
* @param mixed $sql 
*/ 
function getQuerySqlStr($sql) 
{ 
$allsql=$sql.$this->pageQuerySql; 
return $allsql; 
} 
/** 
* 设置每页有多少数据项 
* 
* @param INT $num 
*/ 
function setPagePerNum($num) 
{ 
$this->pagePerNum=$num; 
} 
} 
?> 
使用方法: 
$curPage=$_GET['cp']; 
$curPageGroup=$_GET['cpg'] 
if($curPage=="") 
$curPage=1; 
if($curPageGroup=="") 
$curPageGroup=1; 
//都是从1开始,之前要对传入的数据进行验证,防注入 
//。。。 
$pager=new MysqlPager(); 
$pager->initAllVar(...) 
$pager->showNavPager(); 
//后面的SQL可以是任意的输出 
$sql="select id form dbname "; 
$querysql=$pager->getQuerySqlStr($sql) 
//以后用$querysql 查询数据库就可以得到相应的结果集了
PHP 相关文章推荐
无数据库的详细域名查询程序PHP版(5)
Oct 09 PHP
如何实现给定日期的若干天以后的日期
Oct 09 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
深入PHP数据加密详解
Jun 18 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
Dec 12 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
在laravel框架中使用model层的方法
Oct 08 PHP
PHP 采集程序中常用的函数
Dec 09 #PHP
Php 构造函数construct的前下划线是双的_
Dec 08 #PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 #PHP
PHP 用数组降低程序的时间复杂度
Dec 04 #PHP
PHP 柱状图实现代码
Dec 04 #PHP
Ajax+PHP边学边练 之五 图片处理
Dec 03 #PHP
PHPMyadmin 配置文件详解(配置)
Dec 03 #PHP
You might like
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
javascript动画浅析
2012/08/30 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
Python深入学习之内存管理
2014/08/31 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
使用Python来开发微信功能
2018/06/13 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
python基于opencv实现人脸识别
2021/01/04 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
初三政治教学反思
2014/01/30 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
python 远程执行命令的详细代码
2022/02/15 Python
部分武汉产收音机展览
2022/04/07 无线电