一个比较简单的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怎样调用MSSQL的存储过程
Oct 09 PHP
PHP 引用是个坏习惯
Mar 12 PHP
PHP中的float类型使用说明
Jul 27 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
Jun 26 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
php生成rss类用法实例
Apr 14 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
Python  连接字符串(join %)
2008/09/06 Python
Python程序中用csv模块来操作csv文件的基本使用教程
2016/03/03 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python绘制3D图形
2018/05/03 Python
Python变量类型知识点总结
2019/02/18 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
报到证办理个人委托书
2014/10/06 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书