A-A+

PHP+mysql分页的类

2014年07月11日 PHP技术文章 评论 6 条 阅读 238 views 次

一个简单的PHP+MYSQL分页的类,是经过将面向对象进行整合后形成的类,相比较复杂的分页类,这个类更容易理解,没有太多繁琐的代码,可以定义的功能属性有,1,查询所有的数据总记录数,2,当前第几页,3,每页显示记录的条数,4,一共多少页,5,从数据库中取记录的开始偏移数。

每个功能属性都有一个方法函数,在前台实例化后可以直接使用,非常方便,对于想要重新添加或删除的功能也很容易实现,懂一点PHP的基本上都可以拿来修改使用,这里就不多讲解了,直接看代码:

<?php
适用环境: PHP5.2.x / mysql 5.0.x
代码作者: 夏日博客
联系方式: xiariboke.net
class Page {
private $total; //查询所有的数据总记录数
private $page; //当前第几页
private $num; //每页显示记录的条数
private $pageNum; //一共多少页
private $offset; //从数据库中取记录的开始偏移数
function __construct($total, $page=1, $num=5) {
$this->total=$total;
$this->page=$page;
$this->num=$num;
$this->pageNum=$this->getPageNum();
$this->offset=$this->getOffset();
}
private function getPageNum(){
return ceil($this->total/$this->num);
}
private function getNextPage() {
if($this->page==$this->pageNum)
return false;
else
return $this->page+1;
}
private function getPrevPage() {
if($this->page==1)
return false;
else
return $this->page-1;
}
//数据库查询的偏移量
private function getOffset() {
return ($this->page-1)*$this->num;
}
//当前页开始的记录数
private function getStartNum() {
if($this->total==0)
return 0;
else
return $this->offset+1;
}
//当前页结束的记录数
private function getEndNum() {
return min($this->offset+$this->num,$this->total);
}
public function getPageInfo(){
$pageInfo=array(
\"row_total\" => $this->total,
\"row_num\" => $this->num,
\"page_num\" => $this->getPageNum(),
\"current_page\" => $this->page,
\"row_offset\" => $this->getOffset(),
\"next_page\" => $this->getNextPage(),
\"prev_page\" => $this->getPrevPage(),
\"page_start\" => $this->getStartNum(),
\"page_end\" => $this->getEndNum()
);
return $pageInfo;
}
}
?>

标签:

6 条留言  访客:6 条  博主:0 条

  1. 果核儿

    简单了 看了下 博主的这个分页对象,小弟 略懂php,觉得有两个疑问哈
    1 Page 对象 对客户端 可用的方法就两个1 构造方法 2 getPageInfo
    如果只是简单地分页参数计算 有必要设计成类吗 ? 毕竟实例化一个类需 要分配更多的内存!
    2 getNextPage, getPrevPage 这两个方法语义上一读 就是取得下一页和前一页,但是博主将 判断是否有上一页 与 是否有下一页 逻辑 都融入了这两个方法,如果不做特别的说明,或则查看源代码,客户端调用就会存在两个结果……
    3 这是一个php类 和mysql 有什么关系?
    建议 如果该类的作用确实是 分页对象的话,那 开放相关分页属性的get,set方法,而不是提供pageInfo,这样该分页对象 结合其他对象使用可能 更好,毕竟你设计之初 它就是一个纯粹的分页对象了。

    • smiling

      1,如果不是频繁的使用,就没必要使用类了,比如一个站点只有一个分页,那就可以直接使用面象对象了.
      2,getNextPage,getPrevPage判断的是方法,调用的是结果,判断肯定是要有的,如果不去做判断,则不知道记录集的状态,也就无法判断上一页与下一页的状态了,当然,如果能将其分开就更好了…
      3,这个就是纯粹的PHP分页类,在读取mysql或其它数据库记录集时可以进行调用…其实每一个优秀的PHP对象类都是单独分开的,甚至mysql配置类也是独立的,这样可能更清晰些。

  2. 两对半

    看不懂,以后可能用得着

  3. 屠龙

    函数啊 代码呀 怎么这么难呢

  4. 合肥艺考培训

    博主专业,收藏了。

  5. 免费部落

    这个对新手还是有点用的!

给我留言