一个好用的php分页类

发布时间:2021-01-23编辑:脚本学堂
一个好用的php分页类,使用那种方式显示导航,默认的方式是使用show1()首页|上一页|下一页|末页的方式。

一个好用的php分页类,使用那种方式显示导航,默认的方式是使用show1()首页|上一页|下一页|末页的方式。
有需要的朋友可以参考下。
 

复制代码 代码如下:
<?php
/**
对查询进行分页的类
@link http://www.jb200.com
*/
class paging
{
    private $pageSize;    //没一页显示的条数 默认是10条。
    private $totlePage;    //总共有多少条记录
    private $dbConnection;//数据库连接
    private $nowPageIndex;//当前显示的页数
    private $show;    //使用那种方式显示导航,默认的方式是使用show1()首页|上一页|下一页|末页的方式。
    /**
    构造函数,建立数据库的连接
    @$pageSizeP 没一页显示的条数默认是10条。
    @$show      使用那种方式显示导航,默认的方式是使用show1()首页|上一页|下一页|末页的方式。
    */
    public function _construct($pageSizeP=10,$show="show1")
    {
        $this->dbConnection = @mysql_connect("localhost","username","password");
        if($this->dbConnection)
        {
        die("");
        }
        mysql_select_db($this->dbConnection,"databaseName");
        $this->show = $show;
        $this->pageSize = $pageSizeP;
    }
    /**
    析构函数,关闭数据库的连接。
    */
    public function _destruct()
    {
        @mysql_close($this->dbConnection);
    }
    /**
    查询数据库,显示数据库的记录条数。
    @$sql        查询数据库的sql语句
    @$charset    查询数据库使用的字符集,默认的是UTF-8。
    @return    返回数据库查询的结果,保存成数组,然后返回,条数不确定。
    */
    public function querySQL($sql,$charset="UTF-8")
    {
        mysql_query("SET NAMES ".$charset);
        $rs = @mysql_query($sql);
        if(!$rs)
        {
            die("");
        }
        $num = @mysql_num_rows($rs);
        $this->totlePage= ceil($num/$this->pageSize);
        $this->nowPageIndex = (isset($_POST['page']) || $_POST['page'] >= 1):$_POST['page']?1;
        if($this->nowPageIndex >$this->totlePage)
        {
            $this->nowPageIndex = $this->totlePage;
        }
        $start = ($this->nowPageIndex - 1)*$this->pageSize;
        mysql_free_result($rs);
        $sql .= "LIMIT $start,$this->pageSize";
        $rs = @mysql_query($sql);
        if(!$rs)
        {
            die("");
        }
        $rows = array();
        while($row = @mysql_fetch_row($rs))
        {
            $rows[] = $row;
        }
        @mysql_free_result($rs);
        return $rows;
    }
    /**
    显示导航兰。
    @$arg 调用显示导航的函数的参数。
        $img1 一个数组,保存导航的连接的图片。在调用show1()使用的。
        $size 导航兰的一行显示的页数。在调用show2()使用的。
    */
    public function show($arg)
    {
        $func = $this->show;
        $this->$func($arg);
    }
    /**
    以首页|上一页|下一页|末页的方式显示导航。
    @$img1 首页|上一页|下一页|末页对应的图片路径数组,默认是NULL,既不显示 图片。
    */
    private function show1($img1 = NULL)
    {  
        $url =  $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
        $str = "<table>
            <tr><td>当前$this->nowPageIndex页/共$this->totlePage页</td><td><a herf='";
        $str .= ereg_replace("page=/.&","page=1&",$url);
        $str .= "'>";
        if(isset($img) || $img != NULL)
        {
            $str .= "<img src=$img[0] alt=首页></a></td><td><a href=";
            $page1 = $this->nowPageIndex - 1;
            $str .= ereg_replace("page=/.&","page=$page1&",$url);
            $str .= "><img src=$img[1] alt=上一页></a></td><td><a href=";
            $page1 = $this->nowPageIndex + 1;
            $str .= ereg_replace("page=/.&","page=$page1&",$url);
            $str .= "><img src=$img[2] alt=下一页></a></td><td><a href=";
            $page1 = $this->totlePage ;
            $str .= ereg_replace("page=/.&","page=$page1&",$url);
            $str .= "><img src=$img[3] alt=末页></a></td><td></tr><table>";
        }
        else
        {
            $str .= "首页></a></td><td><a href=";
            $page1 = $this->nowPageIndex - 1;
            $str .= ereg_replace("page=/.&","page=$page1&",$url);
            $str .= ">上一页</a></td><td><a href=";
            $page1 = $this->nowPageIndex + 1;
            $str .= ereg_replace("page=/.&","page=$page1&",$url);
            $str .= ">下一页</a></td><td><a href=";
            $page1 = $this->totlePage ;
            $str .= ereg_replace("page=/.&","page=$page1&",$url);
            $str .= ">末页</a></td><td></tr><table>";
        }
        echo $str;
    }
    /**
    以1|2|3|。。。的方式显示导航。
    @$size 导航兰每一行显示的页数,默认是10。
    */
    private function show2($size =10)
    {
        $url =  $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
        $str = "<table><tr>";
        for($index = 1 ; $index <= $this->totlePage ; $index++)
        {          
            $str .= "<td><a herf=";
            $str .= ereg_replace("page=/.&","page=$index&",$url);
            $str .= "$index</a></td>";
            if($index == $size)
            {
                $str .="</tr><tr>";
            }
        }
        $str .= "</tr></table>";
        echo $str;
    }
}
?>