一个比较简单的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 相关文章推荐
如何将数据从文本导入到mysql
Oct 09 PHP
PHP 文件扩展名 获取函数
Jun 03 PHP
php教程之phpize使用方法
Feb 12 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
PHP新建类问题分析及解决思路
Nov 19 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
面向对象设计的原则是什么
2013/02/13 面试题
运动会广播稿30字
2014/01/21 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
股权转让协议书
2014/12/07 职场文书
中学社团活动总结
2015/05/07 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
签字仪式主持词
2015/07/03 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis
Java Spring Lifecycle的使用
2022/05/06 Java/Android