好好学习,东方不败。

做个努力的小伙。

  博客园  :: 首页  :: 新随笔  ::  ::  :: 管理
  420 随笔 :: 0 文章 :: 65 评论 :: 41万 阅读
平时开发中用到的一个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;
    }
}
?>
复制代码
posted on   snowfly123  阅读(238)  评论(0编辑  收藏  举报
编辑推荐:
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
阅读排行:
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
点击右上角即可分享
微信分享提示