一个比较简单的PHP 分页分组类

<div class="codetitle"><a style="CURSOR: pointer" data="95440" class="copybut" id="copybut95440" onclick="doCopy('code95440')"> 代码如下:

<div class="codebody" id="code95440">
<?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."";
}
/*
输出导航页信息 可以不用参数,但是在使用前一定要设置相应的变量

@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("<<")." ";
}
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.=" curPageUrl?cpg={$this->curPageGroup}&cp=$curPageNum >";
$rtnString.=$this->setCustomStyleString($curPageNum)."
";
}
}
}
if($this->curPageGroup<ceil($this->totalPage/$this->pagePerGroup)-1)
{
$nextPageGroup=$this->curPageGroup+1;
$rtnString.=" curPageUrl?cpg=$nextPageGroup >".$this->setCustomStyleString(">>")."";
}
$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 查询数据库就可以得到相应的结果集了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧