一个比较简单的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.MVC的模板标签系统(一)
Sep 05 PHP
一个php作的文本留言本的例子(六)
Oct 09 PHP
php 获取可变函数参数的函数
Aug 26 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
提高php编程效率技巧
Aug 13 PHP
项目中应用Redis+Php的场景
May 22 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
PHP数组基本用法与知识点总结
Jun 02 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
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
Prototype Class对象学习
2009/07/19 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
python dict remove数组删除(del,pop)
2013/03/24 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
Django stark组件使用及原理详解
2019/08/22 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
allbeauty美国:英国在线美容店
2019/03/11 全球购物
住宅使用说明书
2014/05/09 职场文书
民事授权委托书范文
2014/08/02 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
健康证明
2015/06/19 职场文书
redis限流的实际应用
2021/04/24 Redis
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python