php中分页及SqlHelper类用法实例


Posted in PHP onJanuary 12, 2017

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

文档目录结构如下:

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中分页及SqlHelper类用法实例

php中分页及SqlHelper类用法实例

php中分页及SqlHelper类用法实例

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

PHP 相关文章推荐
用文本文件制作留言板提示(上)
Oct 09 PHP
php escape URL编码
Dec 10 PHP
PHP 错误之引号中使用变量
May 04 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 PHP
PHP内存溢出优化代码详解
Feb 26 PHP
PHP生成图片验证码功能示例
Jan 12 #PHP
PHP中字符串长度的截取用法示例
Jan 12 #PHP
PHP实现二维数组去重功能示例
Jan 12 #PHP
PHP生成图片缩略图类示例
Jan 12 #PHP
php+redis实现多台服务器内网存储session并读取示例
Jan 12 #PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 #PHP
YII2 实现多语言配置的方法分享
Jan 11 #PHP
You might like
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
js实现3D旋转效果
2020/08/18 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
python装饰器使用方法实例
2013/11/21 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
python解析yaml文件过程详解
2019/08/30 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
个人简历的自荐信
2013/10/23 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
小小商店教学反思
2014/04/27 职场文书
节能环保标语
2014/06/12 职场文书
奶茶店创业计划书
2014/08/14 职场文书