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+javascript液晶时钟
Oct 09 PHP
第九节--绑定
Nov 16 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 PHP
php生成验证码函数
Oct 20 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 23 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
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php图像验证码生成代码
2017/06/08 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
JavaScript 事件系统
2010/07/22 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
python函数形参用法实例分析
2015/08/04 Python
Python selenium文件上传方法汇总
2020/11/19 Python
详解Python中的动态属性和特性
2018/04/07 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
python支持多继承吗
2020/06/19 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
体育教师工作总结的自我评价
2013/10/10 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书