php分页类-不错,很好用!

平时开发中用到的一个php分页类,分享下,做个备忘吧。
<?php
/* *
对查询进行分页的类
@link http://www.jbxue.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;
    }
}
?>

你可能感兴趣的:(PHP)