一个比较简单的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的开发框架的现状和展望
Mar 16 PHP
MySql中正则表达式的使用方法描述
Jul 30 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
php返回json数据函数实例
Oct 09 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
php实现上传图片文件代码
Jul 19 PHP
php中的抽象方法和抽象类
Feb 14 PHP
php精度计算的问题解析
Jun 21 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
论坛头像随机变换代码
2006/10/09 PHP
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
php ci框架验证码实例分析
2013/06/26 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
python实现图书借阅系统
2019/02/20 Python
为什么相对PHP黑python的更少
2020/06/21 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
大专毕业生自我评价分享
2013/11/10 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
新娘婚礼致辞
2015/07/27 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang