查看: 503|回复: 0

[PHP学习] php中分页及SqlHelper类用法实例

发表于 2017-11-25 09:39:17
句号论坛

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

文档目录结构如下:

SqlHelper.php代码如下:

  1. <?php
  2. /**
  3. * Created by JetBrains PhpStorm.
  4. * User: lee
  5. * Date: 13-7-26
  6. * Time: 下午8:30
  7. * To change this template use File | Settings | File Templates.
  8. */
  9. class SqlHelper{
  10. private $mysqli;
  11. private static $host="localhost";
  12. private static $user="root";
  13. private static $pwd="";
  14. private static $db="world";
  15. private $sql=false;
  16. private $result=false;
  17. function __construct(){
  18. $this->mysqli=new MySQLi(self::$host,self::$user,self::$pwd,self::$db);
  19. if($this->mysqli->connect_error){
  20. die("连接数据库失败! ".$this->mysql->connect_error);
  21. }
  22. $this->mysqli->query("set names utf8");
  23. }
  24. function execute_dql_all($sql){
  25. //执行查询语句
  26. $arr=array();
  27. $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);
  28. //将数据转存到$arr数组中
  29. while($row=mysqli_fetch_array($this->result,MYSQL_BOTH)){
  30. $arr[]=$row;
  31. }
  32. $this->result->free();
  33. return $arr;
  34. }
  35. function execute_dql_num($sql){
  36. //执行查询语句
  37. $arr=array();
  38. $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);
  39. //将数据转存到$arr数组中
  40. while($row=mysqli_fetch_array($this->result,MYSQLI_NUM)){
  41. $arr[]=$row;
  42. }
  43. $this->result->free();
  44. return $arr;
  45. }
  46. function execute_dql_assoc($sql){
  47. //执行查询语句
  48. $arr=array();
  49. $this->result=$this->mysqli->query($sql) or die ($this->mysql->connect_error);
  50. //将数据转存到$arr数组中
  51. while($row=mysqli_fetch_array($this->result,MYSQLI_ASSOC)){
  52. $arr[]=$row;
  53. }
  54. $this->result->free();
  55. return $arr;
  56. }
  57. //查询某表中的记录数
  58. function execute_dql_counts($table,$id="*"){
  59. $this->sql="select count($id) from $table";
  60. $this->result=$this->mysqli->query($this->sql);
  61. $row=mysqli_fetch_all($this->result);
  62. $this->result->free();
  63. return $row[0][0];
  64. }
  65. function execute_dml($sql){
  66. //执行正删改
  67. $this->result=$this->mysqli->query($sql);
  68. if(!$this->result){
  69. return -1;//执行正删改失败
  70. }else{
  71. if($this->mysqli->affected_rows>0){
  72. return 1;//执行正删改成功,影响行数
  73. }else{
  74. return 0;//执行正删改成功,但没有影响行数
  75. }
  76. }
  77. }
  78. }
复制代码

Paging.php代码如下:

  1. <?php
  2. /**
  3. * Created by JetBrains PhpStorm.
  4. * User: lee
  5. * Date: 13-7-27
  6. * Time: 下午2:48
  7. * To change this template use File | Settings | File Templates.
  8. */
  9. header("Content-type:text/html;charset=utf-8;");
  10. require_once("SqlHelper.php");
  11. class Paging {
  12. private $sqlHelper=false;
  13. private $pageCount=false;//页数
  14. private $counts=false;//总记录数
  15. private $returnArr=false;//分页超链接的分页
  16. function __construct(){
  17. $this->sqlHelper=new SqlHelper();
  18. $this->returnArr=array();
  19. }
  20. /*
  21. * 参数说明
  22. *
  23. * $table 分页时对那个表的数据分页
  24. * $id 辅助查询当前分页的数据表的总记录数
  25. * $pageSize 每页显示多少条信息记录数
  26. * $pagingSize 分页栏每次循环显示出来的个数
  27. * $nowPage 当前是第几页,默认第一页
  28. * $href 分页栏的超链接将要往哪里连接
  29. */
  30. function paging_prev_next($table,$id="*",$pageSize,$pagingSize,$nowPage=1,$href){
  31. $this->counts=$this->sqlHelper->execute_dql_counts($table,$id);
  32. $this->pageCount=ceil($this->counts/$pageSize);
  33. $this->returnArr["count"]=$this->counts;
  34. $this->returnArr["start"]=($nowPage-1)*$pageSize;
  35. $this->returnArr["limit"]=$pageSize;
  36. if($nowPage>$this->pageCount || $nowPage<=0){
  37. return false;
  38. }
  39. $t=(ceil($nowPage/$pagingSize)-1)*$pagingSize+1;
  40. $pre=$nowPage-$pagingSize;
  41. $nex=$nowPage+$pagingSize;
  42. echo "
  43. <span class='paging-list-a paging-list-a-withBg'>{$nowPage}/{$this->pageCount}</span>
  44. <a href='{$href}?nowPage={$pre}' class='paging-list-a'><</a>";
  45. for($i=$t;$i<$t+$pagingSize;$i++){
  46. if($i*$pageSize>$this->pageCount*$pageSize){
  47. break;
  48. }else{
  49. if($nowPage==$i){
  50. echo "
  51. <a href='{$href}?nowPage={$i}' class='paging-list-a paging-list-a-withBg'>{$i}</a>";
  52. }else{
  53. echo "
  54. <a href='{$href}?nowPage={$i}' class='paging-list-a'>{$i}</a>";
  55. }
  56. }
  57. }
  58. echo "
  59. <a href='{$href}?nowPage={$nex}' class='paging-list-a'>></a>";
  60. return $this->returnArr;
  61. }
  62. }
复制代码

paging-list-link.css代码如下:

  1. /**
  2. * Created by JetBrains PhpStorm.
  3. * User: lee
  4. * Date: 13-7-27
  5. * Time: 下午5:56
  6. * To change this template use File | Settings | File Templates.
  7. */
  8. .paging-list-a{
  9. border:1px solid #b5b5af;
  10. background-color:#efebed;
  11. font-family: 'Meiryo UI';
  12. font-size: 16px;
  13. font-weight: 600;
  14. padding: 0px 8px 0px 8px;
  15. /*cursor: pointer;*/
  16. text-decoration: none;
  17. color: #292927;
  18. }
  19. .paging-list-a-withBg{
  20. background-color: #1D92E2;
  21. color: white;
  22. }
复制代码

usePaging.php代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title></title>
  5. <link rel="stylesheet" type="text/css" href="paging-list-link.css">
  6. </head>
  7. <body>
  8. <?php
  9. header("Content-type:text/html;charset=utf-8;");
  10. require_once 'Paging.php';
  11. $paging=new Paging();
  12. //参数说明
  13. /*
  14. * $table 分页时对那个表的数据分页
  15. * $id 辅助查询当前分页的数据表的总记录数
  16. * $pageSize 每页显示多少条信息记录数
  17. * $pagingSize 分页栏每次循环显示出来的个数
  18. * $nowPage 当前是第几页,默认第一页
  19. * $href 分页栏的超链接将要往哪里连接,当前页链接地址
  20. */
  21. //控制起始页为
  22. $nowPage=1;
  23. if(isset($_GET["nowPage"])){
  24. $nowPage=$_GET["nowPage"];
  25. }
  26. //定义分页所需参数
  27. $meiyexiansi=10;
  28. $meiyelianjieshu=10;
  29. $receiveArr=array();
  30. $receiveArr=$paging->paging_prev_next("city","ID",$meiyexiansi,$meiyelianjieshu,$nowPage,"usePaging.php");
  31. //容错判断
  32. if(!$receiveArr){
  33. return;
  34. }
  35. //查询每页需要显示的数据,大小限制存在 $receiveArr 数组中
  36. $sqlHelper=new SqlHelper();
  37. $result=$sqlHelper->execute_dql_num("select * from city limit ".$receiveArr['start'].",".$receiveArr['limit']."");
  38. echo "<pre>";
  39. print_r($result);
  40. echo "</pre>";
  41. ?>
  42. </body>
  43. </html>
复制代码

所使用的数据库为 MySQL5.6 所自带的 world 数据库

下面是运行的效果截图:

不过代码还有个 Bug 。就是翻页到最后的时候会出现显示不了,原因在于 Paging.php 文件的 41~43 行左右判断有问题。

错误代码如下:

  1. if($nowPage>$this->pageCount || $nowPage<=0){
  2. return false;
  3. }
复制代码

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP网络编程技巧总结》及《php常见数据库操作技巧汇总》

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



太阳http代理AD
回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条