php中分页及SqlHelper类用法实例

5年以前  |  阅读数:1058 次  |  编程语言:PHP 

本文实例讲述了php中分页及SqlHelper类用法。分享给大家供大家参考,具体如下:

文档目录结构如下:

SqlHelper.php代码如下:


    <?php
    /**
     * Created by JetBrains PhpStorm.
     * User: lee
     * Date: 13-7-26
     * Time: 下午8:30
     * To change this template use File | Settings | File Templates.
     */
    class SqlHelper{
      private $mysqli;
      private static $host="localhost";
      private static $user="root";
      private static $pwd="";
      private static $db="world";
      private $sql=false;
      private $result=false;
      function __construct(){
        $this->mysqli=new MySQLi(self::$host,self::$user,self::$pwd,self::$db);
        if($this->mysqli->connect_error){
          die("连接数据库失败! ".$this->mysql->connect_error);
        }
        $this->mysqli->query("set names utf8");
      }
      function execute_dql_all($sql){
        //执行查询语句
        $arr=array();
        $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);
        //将数据转存到$arr数组中
        while($row=mysqli_fetch_array($this->result,MYSQL_BOTH)){
          $arr[]=$row;
        }
        $this->result->free();
        return $arr;
      }
      function execute_dql_num($sql){
        //执行查询语句
        $arr=array();
        $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);
        //将数据转存到$arr数组中
        while($row=mysqli_fetch_array($this->result,MYSQLI_NUM)){
          $arr[]=$row;
        }
        $this->result->free();
        return $arr;
      }
      function execute_dql_assoc($sql){
        //执行查询语句
        $arr=array();
        $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);
        //将数据转存到$arr数组中
        while($row=mysqli_fetch_array($this->result,MYSQLI_ASSOC)){
          $arr[]=$row;
        }
        $this->result->free();
        return $arr;
      }
      //查询某表中的记录数
      function execute_dql_counts($table,$id="*"){
        $this->sql="select count($id) from $table";
        $this->result=$this->mysqli->query($this->sql);
        $row=mysqli_fetch_all($this->result);
        $this->result->free();
        return $row[0][0];
      }
      function execute_dml($sql){
        //执行正删改
        $this->result=$this->mysqli->query($sql);
        if(!$this->result){
          return -1;//执行正删改失败
        }else{
          if($this->mysqli->affected_rows>0){
            return 1;//执行正删改成功,影响行数
          }else{
            return 0;//执行正删改成功,但没有影响行数
          }
        }
      }
    }

Paging.php代码如下:


    <?php
    /**
     * Created by JetBrains PhpStorm.
     * User: lee
     * Date: 13-7-27
     * Time: 下午2:48
     * To change this template use File | Settings | File Templates.
     */
    header("Content-type:text/html;charset=utf-8;");
    require_once("SqlHelper.php");
    class Paging {
      private $sqlHelper=false;
      private $pageCount=false;//页数
      private $counts=false;//总记录数
      private $returnArr=false;//分页超链接的分页
      function __construct(){
        $this->sqlHelper=new SqlHelper();
        $this->returnArr=array();
      }
      /*
       * 参数说明
       *
       * $table 分页时对那个表的数据分页
       * $id 辅助查询当前分页的数据表的总记录数
       * $pageSize 每页显示多少条信息记录数
       * $pagingSize 分页栏每次循环显示出来的个数
       * $nowPage 当前是第几页,默认第一页
       * $href 分页栏的超链接将要往哪里连接
       */
      function paging_prev_next($table,$id="*",$pageSize,$pagingSize,$nowPage=1,$href){
        $this->counts=$this->sqlHelper->execute_dql_counts($table,$id);
        $this->pageCount=ceil($this->counts/$pageSize);
        $this->returnArr["count"]=$this->counts;
        $this->returnArr["start"]=($nowPage-1)*$pageSize;
        $this->returnArr["limit"]=$pageSize;
        if($nowPage>$this->pageCount || $nowPage<=0){
          return false;
        }
        $t=(ceil($nowPage/$pagingSize)-1)*$pagingSize+1;
        $pre=$nowPage-$pagingSize;
        $nex=$nowPage+$pagingSize;
        echo "
          <span class='paging-list-a paging-list-a-withBg'>{$nowPage}/{$this->pageCount}</span>
          <a href='{$href}?nowPage={$pre}' class='paging-list-a'><</a>";
        for($i=$t;$i<$t+$pagingSize;$i++){
          if($i*$pageSize>$this->pageCount*$pageSize){
            break;
          }else{
            if($nowPage==$i){
              echo "
              <a href='{$href}?nowPage={$i}' class='paging-list-a paging-list-a-withBg'>{$i}</a>";
            }else{
              echo "
              <a href='{$href}?nowPage={$i}' class='paging-list-a'>{$i}</a>";
            }
          }
        }
        echo "
          <a href='{$href}?nowPage={$nex}' class='paging-list-a'>></a>";
        return $this->returnArr;
      }
    }

paging-list-link.css代码如下:


    /**
     * Created by JetBrains PhpStorm.
     * User: lee
     * Date: 13-7-27
     * Time: 下午5:56
     * To change this template use File | Settings | File Templates.
     */
    .paging-list-a{
      border:1px solid #b5b5af;
      background-color:#efebed;
      font-family: 'Meiryo UI';
      font-size: 16px;
      font-weight: 600;
      padding: 0px 8px 0px 8px;
      /*cursor: pointer;*/
      text-decoration: none;
      color: #292927;
    }
    .paging-list-a-withBg{
      background-color: #1D92E2;
      color: white;
    }

usePaging.php代码如下:


    <!DOCTYPE html>
    <html>
    <head>
      <title></title>
      <link rel="stylesheet" type="text/css" href="paging-list-link.css">
    </head>
    <body>
    <?php
    header("Content-type:text/html;charset=utf-8;");
    require_once 'Paging.php';
    $paging=new Paging();
    //参数说明
    /*
     * $table 分页时对那个表的数据分页
     * $id 辅助查询当前分页的数据表的总记录数
     * $pageSize 每页显示多少条信息记录数
     * $pagingSize 分页栏每次循环显示出来的个数
     * $nowPage 当前是第几页,默认第一页
     * $href 分页栏的超链接将要往哪里连接,当前页链接地址
     */
    //控制起始页为
    $nowPage=1;
    if(isset($_GET["nowPage"])){
      $nowPage=$_GET["nowPage"];
    }
    //定义分页所需参数
    $meiyexiansi=10;
    $meiyelianjieshu=10;
    $receiveArr=array();
    $receiveArr=$paging->paging_prev_next("city","ID",$meiyexiansi,$meiyelianjieshu,$nowPage,"usePaging.php");
    //容错判断
    if(!$receiveArr){
      return;
    }
    //查询每页需要显示的数据,大小限制存在 $receiveArr 数组中
    $sqlHelper=new SqlHelper();
    $result=$sqlHelper->execute_dql_num("select * from city limit ".$receiveArr['start'].",".$receiveArr['limit']."");
    echo "<pre>";
    print_r($result);
    echo "</pre>";
    ?>
    </body>
    </html>

所使用的数据库为 MySQL5.6 所自带的 world 数据库

下面是运行的效果截图:

不过代码还有个 Bug 。就是翻页到最后的时候会出现显示不了,原因在于 Paging.php 文件的 41~43 行左右判断有问题。

错误代码如下:


    if($nowPage>$this->pageCount || $nowPage<=0){
      return false;
    }

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP网络编程技巧总结》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例