1. <?php
  2. /*
  3. 分页类 用于实现对多条数据分页显示 
  4. version:2.0 //基于1.0 数据库查询用mysqli实现
  5. author:Knight
  6. E-Mail:S.Knight.Work@gmail.com
  7. Date:2013-10-20
  8. */
  9.  
  10. /*
  11. 调用非常方便,先传入连接正确的mysqli对象,然后直接传入查询的sql字符串即可,也可以在第三个参数指定指定每页显示的数据条数
  12. 例如$pages = new Page($mysqli, 'SELECT * FROM `zy_common_member`');
  13. 或 $pages = new Page($mysqli, 'SELECT * FROM `zy_common_member`', 10);
  14. */
  15. class Page{
  16. private $curPage;
  17. private $totalPages;//数据总共分多少页显示
  18. private $dispNum;//每页显示的数据条数
  19. private $queryStr;//查询的SQL语句
  20. private $limitStr;//查询语句后面的limit控制语句
  21. private $mysqli;//连接数据库的mysqli对象
  22. /*
  23. 构造函数
  24. $queryStr 查询数据的SQL语句
  25. $dispNum 每页显示的数据条数
  26. */
  27. public function __construct( $mysqli, $queryStr='', $dispNum=10){
  28. $result = $mysqli->query($queryStr);
  29. $totalNum = $result->num_rows;
  30. $this->dispNum = $dispNum;
  31. $this->totalPages = ceil($totalNum / $dispNum);
  32. $this->queryStr = $queryStr;
  33. $this->mysqli = $mysqli;
  34.  
  35. $temp = (isset($_GET["curPage"]) ? $_GET["curPage"] : 1);
  36. $this->setCurPage($temp);
  37.  
  38. $this->showCurPage();
  39. $this->showFoot();
  40. }
  41.  
  42. /*显示当前页的数据内容*/
  43. private function showCurPage(){
  44. $this->limitStr = ' LIMIT '.(($this->curPage - 1)* $this->dispNum).','.$this->dispNum;
  45. //echo $this->queryStr.$this->limitStr;
  46. $result = $this->mysqli->query($this->queryStr.$this->limitStr);
  47.  
  48. if (!$result)
  49. {
  50. if ($this->totalPages > 0)
  51. {
  52. echo '查询出错'.'<br>';
  53. }
  54. else
  55. {
  56. echo '无数据'.'<br>';
  57. }
  58. return;
  59. }
  60. $cols = $result->field_count;
  61. $array = $result->fetch_fields();
  62.  
  63. //var_dump($array);
  64. echo '<table border="1">';
  65. echo '<tr>';
  66. for($i=0; $i<$cols; $i++)
  67. {
  68. echo '<th>';
  69. echo $array[$i]->name;
  70. echo '</th>';
  71. }
  72. echo '</tr>';
  73.  
  74. while($row = $result->fetch_assoc())
  75. {
  76. echo '<tr>';
  77. foreach($row as $key=>$value)
  78. {
  79. echo '<td>';
  80. echo $value;
  81. echo '</td>';
  82. }
  83. echo '</tr>';
  84. }
  85.  
  86. $result->close();
  87.  
  88. echo '</table>';
  89. }
  90.  
  91. private function setCurPage($curPage){
  92. if($curPage < 1)
  93. {
  94. $curPage = 1;
  95. }
  96. else if($curPage > $this->totalPages)
  97. {
  98. $curPage = $this->totalPages;
  99. }
  100. $this->curPage = $curPage;
  101. }
  102.  
  103. /*
  104. 显示分页页脚的信息
  105. 如首页,上一页,下一页,尾页等信息
  106. */
  107. private function showFoot(){
  108. echo '<a href="?curPage=1">首页</a>';
  109. echo '<a href="?curPage='.($this->curPage - 1).'">上一页</a>';
  110. echo '<a href="?curPage='.($this->curPage + 1).'">下一页</a>';
  111. echo '<a href="?curPage='.$this->totalPages.'">尾页</a>';
  112. }
  113.  
  114. }
  115.  
  116. ?>

用PHP写的一个简单的分页类 2.0版的更多相关文章

  1. 用PHP写的一个简单的分页类 1.0版

    <?php /* 分页类 用于实现对多条数据分页显示 version:1.0 author:Knight E-Mail:S.Knight.Work@gmail.com Date:2013-10- ...

  2. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  3. 自己写的一个简单的Tab类

    //------------- PS_DOM 功能函数 start----------------var PS_DOM ={ indexOf: function(arr, e){ for(var i= ...

  4. 写了一个简单的CGI Server

    之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看 ...

  5. 自己写的一个简单PHP采集器

    自己写的一个简单PHP采集器 <?php //**************************************************************** $url = &q ...

  6. 写了一个简单可用的IOC

    根据<架构探险从零开始写javaweb框架>内容写的一个简单的 IOC 学习记录    只说明了主要的类,从上到下执行的流程,需要分清主次,无法每个类都说明,只是把整个主线流程说清楚,避免 ...

  7. 写了一个简单的 Mybatis

    写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...

  8. Python之自定义封装一个简单的Log类

    参考:http://www.jb51.net/article/42626.htm 参考:http://blog.csdn.net/u011541946/article/details/70198676 ...

  9. VC++ 一个简单的Log类

    在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...

随机推荐

  1. Java并发(二):基础概念

    并发编程的第二部分,先来谈谈发布(Publish)与逸出(Escape); 发布是指:对象能够在当前作用域之外的代码中使用,例如:将对象的引用传递到其他类的方法中,对象的引用保存在其他类可以访问的地方 ...

  2. dubbo服务降级(1)

    1. 在 dubbo 管理控制台配置服务降级 上图的配置含义是:consumer 调用 com.zhang.HelloService 的方法时,直接返回 null,不发起远程调用. 实际操作是:在 z ...

  3. 洛谷P2430 严酷的训练

    第一眼看这道题...啊哈,啥??? 仔细看一看,发现:诶, 这不是01背包吗? 两人水平值的比值*老王做题用时 可以算出WKY做每道题的用时. 那么每道题的p就可以转换成费用c[i], 价值q就是w[ ...

  4. 牛客NOIP提高组(二)题解

    心路历程 预计得分:100 + 40 + 30 = 170 实际得分:100 + 30 + 0 = 130 T2有一个部分分的数组没开够RE了. T3好像是思路有点小问题.. 思路没问题,实现的时候一 ...

  5. VueJs $watch()方法总结!!

    最近公司用vue框架写交互,之前没怎么写过,但是很多数据双向绑定的东东跟angular很像!所以上手很快!哈哈 今天就碰到一个vue的问题啊!!产品需求是,datetimepick时间选择器一更改时间 ...

  6. html5 03

    HTML03 一. 表单标签 <form></form> 常用属性 Action 跳转到什么页面 Method  以什么模式提交 Get Url有长度限制 IE6.0 url ...

  7. 数据结构-List接口-LinkedList类-Set接口-HashSet类-Collection总结

    一.数据结构:4种--<需补充> 1.堆栈结构:     特点:LIFO(后进先出);栈的入口/出口都在顶端位置;压栈就是存元素/弹栈就是取元素;     代表类:Stack;     其 ...

  8. apple-touch-icon-precomposed

    <link rel="apple-touch-icon-precomposed" href=""> apple-touch-icon-precomp ...

  9. LR使用流程简介之录制方式说明

    1.LR脚本录制方式说明1)HTML-based script基于HTML的脚本 从内存中读取并下载资源,较少的关联处理,可以加入图片检查,回放时需要解析返回的信息 a-基于用户行为的方式 web_l ...

  10. 一点对原生HTTP请求的理解与总结

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10946165.html,多谢,=.=~ 术语 HTTP:超文本传输协议,规定Web浏览器如何从W ...