PHP 分页类

21 篇文章 1 订阅
4 篇文章 0 订阅

废话少说,先上效果图

                                                                                

<?php
require_once('Page.class.php'); //分页类
mysql_connect('****','****','****') or die('连接失败');
mysql_select_db('****');
mysql_query('set names urf8');
$showrow = 3;//一页显示的行数
$curpage = empty($_GET['page'])?1:$_GET['page'];//当前的页,还应该处理非数字的情况
$url = "?page={page}";//分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']
//省略了链接mysql的代码,测试时自行添加
$sql = "SELECT * FROM ****";
$query = mysql_query($sql);
$total = mysql_num_rows($query);//记录总条数
if(!empty($_GET['page']) && $total !=0 && $curpage > ceil($total/$showrow))
$curpage = ceil($total/$showrow);//当前页数大于最后页数,取最后一页
//获取数据
$get_data = "SELECT * FROM **** limit ".($curpage-1)*$showrow.",$showrow;";
//下一步是进行数据的展示,这里就不进行具体操作了。
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>实例演示简易通用的PHP分页类</title>
<link href="page.css" type="text/css" rel="stylesheet" /> 
</head>
<body>
    <div class="main">
        <div class="showData">
            <!--显示数据区-->
        </div>
        <div class="showPage">
          <?php
             if($total>$showrow){//总记录数大于每页显示数,显示分页
             $page = new Page($total,$showrow,$curpage,$url,2);
             echo $page->myde_write();
            }
          ?>
         </div>
    </div>
</body>
</html>

 

 

 

 

 

直接上代码:

分页类Page.class.php

 

<?php
/***********************************************
 * @类名:   page
 * @参数:   $myde_total - 总记录数
 *          $myde_size - 一页显示的记录数
 *          $myde_page - 当前页
 *          $myde_url - 获取当前的url
 * @功能:   分页实现
 * @作者:   宋海阁
 */
class Page {
    private $myde_total;          //总记录数
    private $myde_size;           //一页显示的记录数
    private $myde_page;           //当前页
    private $myde_page_count;     //总页数
    private $myde_i;              //起头页数
    private $myde_en;             //结尾页数
    private $myde_url;            //获取当前的url
    /*
     * $show_pages
     * 页面显示的格式,显示链接的页数为2*$show_pages+1。
     * 如$show_pages=2那么页面上显示就是[首页] [上页] 1 2 3 4 5 [下页] [尾页] 
     */
    private $show_pages;
  
    public function __construct($myde_total=1,$myde_size=1,$myde_page=1,$myde_url,$show_pages=2){
        $this->myde_total = $this->numeric($myde_total);
        $this->myde_size = $this->numeric($myde_size);
        $this->myde_page = $this->numeric($myde_page);
        $this->myde_page_count = ceil($this->myde_total/$this->myde_size);
        $this->myde_url = $myde_url;
        if($this->myde_total<0) $this->myde_total=0;
        if($this->myde_page<1)  $this->myde_page=1;
        if($this->myde_page_count<1) $this->myde_page_count=1;
        if($this->myde_page>$this->myde_page_count) $this->myde_page=$this->myde_page_count;
        $this->limit = ($this->myde_page-1)*$this->myde_size;
        $this->myde_i=$this->myde_page-$show_pages;
        $this->myde_en=$this->myde_page+$show_pages;
        if($this->myde_i<1){
          $this->myde_en=$this->myde_en+(1-$this->myde_i);
          $this->myde_i=1;
        }
        if($this->myde_en>$this->myde_page_count){
          $this->myde_i = $this->myde_i-($this->myde_en-$this->myde_page_count);
          $this->myde_en=$this->myde_page_count;
        }
        if($this->myde_i<1)$this->myde_i=1;
    }
    //检测是否为数字
    private function numeric($num){
      if(strlen($num)){
         if(!preg_match("/^[0-9]+$/",$num)){
             $num=1;
           }else{
             $num = substr($num,0,11);
         }
      }else{
               $num=1;
      }
      return $num;
    }
    //地址替换
    private function page_replace($page){
        return str_replace("{page}",$page,$this->myde_url);
    }
    //首页
    private function myde_home(){
        if($this->myde_page!=1){
            return "<a href='".$this->page_replace(1)."'"." title='首页'>首页</a>";
        }else{
            return "<a href='#'>首页</a>";
        }
    }
    //上一页
    private function myde_prev(){
       if($this->myde_page!=1){
           return "<a href='".$this->page_replace($this->myde_page-1)."'"." title='上一页'>上一页</a>";
       }else{
              return "<a href='#'>上一页</a>";
       }
    }
    //下一页
    private function myde_next(){
        if($this->myde_page!=$this->myde_page_count){
            return "<a href='".$this->page_replace($this->myde_page+1)."'"." title='下一页'>下一页</a>";
        }else{
            return"<a href='#'>下一页</a>";
        }
    }
    //尾页
    private function myde_last(){
        if($this->myde_page!=$this->myde_page_count){
            return "<a href='".$this->page_replace($this->myde_page_count)."'"." title='尾页'>尾页</a>";
        }else{
            return "<a href='#'>尾页</a>";
        }
    }
    //输出
    public function myde_write($id='page'){
       $str ="<div id='".$id."'".">";
       $str.=$this->myde_home();
       $str.=$this->myde_prev();
       if($this->myde_i>1){
            $str.="<p class='pageEllipsis'>...</p>";
       }
       for($i=$this->myde_i;$i<=$this->myde_en;$i++){
            if($i==$this->myde_page){
                $str.="<a href='".$this->page_replace($i)."' title=第".$i."页 class='cur'>".$i."</a>";
            }else{
          $str.="<a href='".$this->page_replace($i)."' title=第".$i."页>".$i."</a>";
            }
       }
       if( $this->myde_en<$this->myde_page_count ){
            $str.="<p class='pageEllipsis'>...</p>";
       }
       $str.=$this->myde_next();
       $str.=$this->myde_last();
       //$str.="<p class='pageRemark'>共<b>".$this->myde_page_count.
       //      "</b>页<b>".$this->myde_total."</b>条数据</p>";
       $str.="</div>";
       return $str;
    }
}
?>

 

 

分页样式文件:page.css

@CHARSET "UTF-8";
#page{
    height:40px;
    padding:20px 0px;
}
#page a{
    display:block;
    float:left;
    margin-right:10px;
    padding:2px 12px;
    height:24px;
    border:1px #cccccc solid;
    background:#fff;
    text-decoration:none;
    color:#808080;
    font-size:12px;
    line-height:24px;
}
#page a:hover{
    color:#077ee3;
    border:1px #077ee3 solid;
}
#page a.cur{
    border:none;
    background:#077ee3;
    color:#fff;
}
#page p{
    float:left;
    padding:2px 12px;
    font-size:12px;
    height:24px;
    line-height:24px;
    color:#bbb;
    border:1px #ccc solid;
    background:#fcfcfc;
    margin-right:8px;
  
}
#page p.pageRemark{
    border-style:none;
    background:none;
    margin-right:0px;
    padding:4px 0px;
    color:#666;
}
#page p.pageRemark b{
    color:red;
}
#page p.pageEllipsis{
    border-style:none;
    background:none;
    padding:4px 0px;
    color:#808080;
}


前台显示文件:

 

 

<?php
require_once('Page.class.php'); //分页类
mysql_connect('****','****','****') or die('连接失败');
mysql_select_db('****');
mysql_query('set names urf8');
$showrow = 3;//一页显示的行数
$curpage = empty($_GET['page'])?1:$_GET['page'];//当前的页,还应该处理非数字的情况
$url = "?page={page}";//分页地址,如果有检索条件 ="?page={page}&q=".$_GET['q']
//省略了链接mysql的代码,测试时自行添加
$sql = "SELECT * FROM ****";
$query = mysql_query($sql);
$total = mysql_num_rows($query);//记录总条数
if(!empty($_GET['page']) && $total !=0 && $curpage > ceil($total/$showrow))
$curpage = ceil($total/$showrow);//当前页数大于最后页数,取最后一页
//获取数据
$get_data = "SELECT * FROM **** limit ".($curpage-1)*$showrow.",$showrow;";
//下一步是进行数据的展示,这里就不进行具体操作了。
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>实例演示简易通用的PHP分页类</title>
<link href="page.css" type="text/css" rel="stylesheet" /> 
</head>
<body>
    <div class="main">
        <div class="showData">
            <!--显示数据区-->
        </div>
        <div class="showPage">
          <?php
             if($total>$showrow){//总记录数大于每页显示数,显示分页
             $page = new Page($total,$showrow,$curpage,$url,2);
             echo $page->myde_write();
            }
          ?>
         </div>
    </div>
</body>
</html>

 

 

OK,搞定。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值