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

 更新时间:2009年12月10日 21:30:30   作者:   我要评论
最近写的一个PHP 分页分组类,写完后才看到,网上有太多的了,但是这个比较简单,记到此处,备用,对于学习php的朋友也是一个不错的参考。
复制代码 代码如下:

<?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调用接口API封装的例子

    PHP调用接口API封装的例子

    今天小编就为大家分享一篇PHP调用接口API封装的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • smarty模板局部缓存方法使用示例

    smarty模板局部缓存方法使用示例

    这篇文章主要介绍了smarty模板局部缓存方法,需要的朋友可以参考下
    2014-06-06
  • PHP无限循环获取MySQL中的数据实例代码

    PHP无限循环获取MySQL中的数据实例代码

    最近公司有个需求需要从MySQL获取数据,然后在页面上无线循环的翻页展示.其实这个功能可以通过jq实现,也可以通过php+mysql实现,下面小编给大家分享基于PHP无限循环获取MySQL中的数据实现方法,感兴趣的朋友一起看看吧
    2017-08-08
  • phpStudy配置多站点多域名和多端口的方法

    phpStudy配置多站点多域名和多端口的方法

    本篇文章主要介绍了phpStudy配置多站点多域名和多端口的方法,具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • php实现爬取和分析知乎用户数据

    php实现爬取和分析知乎用户数据

    本文给大家介绍的是利用php的curl编写的爬取知乎用户数据的爬虫,并分析用户的各种属性,有需要的小伙伴可以参考下
    2016-01-01
  • PHP开发之用微信远程遥控服务器

    PHP开发之用微信远程遥控服务器

    微信公众好的开发很火,小程序更火。小编给大家分享一个PHP开发之用微信远程遥控服务器的实例代码,需要的朋友参考下
    2018-01-01
  • destoon常用的安全设置概述

    destoon常用的安全设置概述

    这篇文章主要介绍了destoon安全设置,对于网站安全来说非常重要,需要的朋友可以参考下
    2014-06-06
  • Zend Framework过滤器Zend_Filter用法详解

    Zend Framework过滤器Zend_Filter用法详解

    这篇文章主要介绍了Zend Framework过滤器Zend_Filter用法,结合实例形式分析了过滤器Zend_Filter的功能、原理、使用方法及相关注意事项,需要的朋友可以参考下
    2016-12-12
  • 详解laravel安装使用Passport(Api认证)

    详解laravel安装使用Passport(Api认证)

    这篇文章主要介绍了详解laravel安装使用Passport(Api认证),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Codeigniter实现发送带附件的邮件

    Codeigniter实现发送带附件的邮件

    这篇文章主要介绍了Codeigniter实现发送带附件的邮件的方法,涉及Codeigniter中attach方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03

最新评论