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 相关文章推荐
php 无极分类(递归)实现代码
Jan 05 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
探讨PHP中OO之静态关键字以及类常量的详解
Jun 07 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
输出控制类
2006/10/09 PHP
phplot生成图片类用法详解
2015/01/06 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
Jquery网页内滑动缓冲导航的实现代码
2015/04/05 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
Python设计模式之原型模式实例详解
2019/01/18 Python
详解python中的闭包
2020/09/07 Python
css3实现超立体3D图片侧翻倾斜效果
2014/04/16 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
如何写好升职自荐信
2014/01/06 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
七年级历史教学反思
2014/02/05 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
节约用电标语
2014/06/17 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
专业见习报告范文
2014/11/03 职场文书
2016教师节感恩话语
2015/12/09 职场文书