一个比较简单的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 session 错误
May 21 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
async和DOM Script文件加载比较
Jul 20 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
php array_values 返回数组的值实例详解
Nov 17 PHP
轻松实现php文件上传功能
Feb 17 PHP
Smarty模板语法详解
Jul 20 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
Node.js模拟发起http请求从异步转同步的5种用法
2018/09/26 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
从零学python系列之从文件读取和保存数据
2014/05/23 Python
详解Python中的Cookie模块使用
2015/07/06 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python实现求数列和的方法示例
2018/01/12 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
中学生运动会入场词
2014/02/12 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
干部个人考察材料
2014/12/24 职场文书
北京故宫导游词
2015/01/31 职场文书