黑马程序员技术交流社区

标题: 【黑马程序员济南】PHP模块讲解之分页模块讲解 [打印本页]

作者: 小鲁哥哥    时间: 2018-1-3 15:16
标题: 【黑马程序员济南】PHP模块讲解之分页模块讲解
本帖最后由 小鲁哥哥 于 2018-1-5 14:09 编辑

【黑马程序员济南】PHP模块讲解之分页模块讲解

       作为一个Web程序,经常要和不计其数的数据打交道,比如会员的数据,文章数据,假如只有几十个会员那很好办,在一页显示就可以了,可是假如你的网站是几千甚至几十万会员的话,如果都在一页打开的话无论对浏览器还是观看者都是一种折磨,而且如果数据上亿,从数据库里查询一次的话,对服务器的压力是很大的,这不是正确的方法。而解决这些问题比较合适的方法就是分页。

今天我们就来简单的介绍一下如何实现分页功能

首先我们先来了解什么是分页?

       分页(pagination),即将一个页面的数据分成两个或两个以上的页面来展示该数据。

分页的实现原理:

       所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:
       每页多少条记录($PageSize)?
       当前是第几页($CurrentPageID)?

       以MySQL数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。

       前10条记录:select * from table limit 0,10
       第11至20条记录:select *from table limit 10,10
       第21至30条记录:select *from table limit 20,10

我们如何去获取这些offset和rows的数据那?

      其实就是我们在之前要求给的参数里就可以获取到
      每页有多少条记录   è     对应的就是rows

但是当前是第几页跟偏移量却是一点关系都没有,那我们应该如何去获取到这些信息那?
      我们回过头来继续看上面的案例
      每页显示10条
      第一页:       0     ,      10
      第二页:       10   ,      20
      第三页:       20   ,      30
      第四页:       30   ,      40
      ……
      第十页:       90   ,      100
大家有没有从中发现他的规律那?
       没错,就是这个公式:
       offset这个偏移量              =(页码数-1)*rows;

这样的话实现mysql分页的需要的参数我们就都获取出来了

所以上面案例中得到的数据我们就可以这样获取:
       SELECT* FROM table LIMIT ($CurrentPageID-1)* $PageSize, $PageSize;

到此为止,分页的基本原理就给大家介绍到这里,不知道大家对我今天讲解的分页的原理理解的如何,有什么问题可以在下面留言哦~
如果你想了解更多黑马课程请点击这里,如果你想加入黑马这个大家庭学习先进技术,广交天下好友!
黑马程序员济南中心联系电话:0531-55696830






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2