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+java实现自动新闻滚动窗口
Oct 09 PHP
基于mysql的论坛(3)
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
php error_log 函数的使用
Apr 13 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
关于PHP5 Session生命周期介绍
Mar 02 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
PHP数组函数知识汇总
May 12 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 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检查是否是ajax请求的方法
2015/04/16 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
Display SQL Server Version Information
2007/06/21 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
python实现字符串和日期相互转换的方法
2015/05/13 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
python3排序的实例方法
2020/10/20 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
linux下进程间通信的方式
2013/01/23 面试题
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
高三自我鉴定范文
2013/10/19 职场文书
社会保险接收函
2014/01/12 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
实用的简历自我评价
2014/03/06 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
致运动员加油稿
2015/07/21 职场文书
早上好问候语大全
2015/11/10 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
Golang Web 框架Iris安装部署
2022/08/14 Python