php中分页及SqlHelper类用法实例

 更新时间:2017年01月12日 11:42:02   作者:lx_3278@126  
这篇文章主要介绍了php中分页及SqlHelper类用法,结合实例形式分析了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'>&lt;</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'>&gt;</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 preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】

    PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】

    这篇文章主要介绍了PHP preg_match实现正则表达式匹配功能,较为详细的介绍了preg_match函数的功能、参数含义、返回值及使用方法,并结合实例给出了preg_match输出是否匹配及匹配值的相关实现技巧,需要的朋友可以参考下
    2017-07-07
  • [PHP]实用函数7

    [PHP]实用函数7

    [PHP]实用函数7...
    2007-11-11
  • PHP关联链接常用代码

    PHP关联链接常用代码

    为了优化内链,我们需要将内容添加上关键链接,那内容如果添加关联链接呢,怎么添加呢
    2012-11-11
  • php的RSA加密解密算法原理与用法分析

    php的RSA加密解密算法原理与用法分析

    这篇文章主要介绍了php的RSA加密解密算法原理与用法,结合实例形式分析了rsa加密解密算法的相关概念、原理及PHP使用RSA加密解密算法的具体实现技巧,需要的朋友可以参考下
    2020-01-01
  • Windows2003 下 MySQL 数据库每天自动备份

    Windows2003 下 MySQL 数据库每天自动备份

    Windows2003 下 MySQL 数据库每天自动备份...
    2006-12-12
  • 利用Dockerfile文件部署php项目的全过程

    利用Dockerfile文件部署php项目的全过程

    环境部署一直是一个很大的问题,无论是开发环境还是生产环境,但是Docker将开发环境和生产环境以轻量级方式打包,提供了一致的环境,下面这篇文章主要给大家介绍了关于利用Dockerfile文件部署php项目的相关资料,需要的朋友可以参考下
    2022-07-07
  • php 如何获取数组第一个值

    php 如何获取数组第一个值

    以下是对使用php实现获取数组第一个值的方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • PHP 简单数组排序实现代码

    PHP 简单数组排序实现代码

    PHP知道如何比较两个数字或字符串,但多维数组的每个元素都是数组。PHP不知道如何去比较两个数组,所以需要建立一个比较它们的方法。
    2009-08-08
  • Discuz 6.0+ 批量注册用户名

    Discuz 6.0+ 批量注册用户名

    Discuz 6.0+ 批量注册用户名 此方法适合于手动采集用户名,自动注册用户名,这样做的好处是比较逼真!
    2009-09-09
  • 一文彻底搞懂php的后期静态绑定举例讲解

    一文彻底搞懂php的后期静态绑定举例讲解

    这篇文章主要来带大家彻底搞懂php的后期静态绑定的举例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06

最新评论