分享

PHP实现分页原理详解【附源代码】

 何湘辉博客 2016-02-09
  分页在网站上面是一个必不可少的东西,例如在论坛上,只有几十张帖子那很好办,在一页显示就可以了,可是如果论坛有几千甚至几十万帖子的话,如果都在一页显示的话无论对浏览器还是用户都是一种折磨,而且如果数据上亿,从数据库里查询一次的话,对服务器的压力是很大的。

  所以就有了分页这个东西,接下来给大家讲一下如何实现分页。

  假设我们有100条数据,要在每页中显示10条,这样的话就会分10页来显示,我们先看一看在mysql里提取10条数据是如何操作的。

  mysql_query('SELECT * FROM `article` LIMIT 0, 10');

  上面是一条很简单的数据库查询语句,它的意思就是从名叫“article”的表里面提取10条数据,细心的朋友可能已经知道了,这条查询语句最关键的就是limt 0, 10。

  为了让你们更容易理解,我用a和b替换掉0和10。

  limit a, b 就是从第a条记录开始,取出b条数据,a表示从哪里开始取出数据,b表示取多少条,也就是限定条件,限定他只能取多少条。假如一页显示10条数据,那么b就是10,一页显示20条数据,b就是20。

  看几个例子:

  Limit 0,10 //第一页Limit 10,10 //第二页Limit 20,10 //第三页Limit 30,10 //第四页

  看出什么规律了吗?没错,每翻一页,第一个参数加10,而第二个参数一直不变。

  可能有人就会问,为什么第一个参数会变,而第二个参数不变呢?

  上面已经说过了,第一个参数表示从哪里开始,每翻一页加10,这10条数据在上一页已经显示过了,所以就要加10从它的后面开始取出这一页数据。第二个参数因为我们要每一页都只显示10条数据,所以第二个数值一直不变。

  也就是说,只要我们改变第一个参数的值就可以实现分页了,那我们要怎么改变呢?没错,用url的GET方式获取页数。

  例如index.php?page=5

  相信大家对这种url不陌生吧?可以说随处可见,其中的page参数就是要显示的页数。

  看一小段代码:

  $page = $_GET['page'];// 接受url中的page参数if($page == ''){ $page = 1; //如果page不存在,那么页数就是1;}$page_size = 10; //每页显示10条数据,也就是第二个参数

  现在我们要获取数据库中到底有多少条数据,才能判断要分多少页, 具体的公式:

  总数据条数 除以 每页显示的条数等于总页数,也就是说100/10=10,还有一种情况有余数, 10/3=3.3333 有余数存在总页数就要加1,所以总页数为4。

  计算页数代码:

  $total=mysql_num_rows(mysql_query('SELECT * FROM `article`')); //查询总共有多少条数据$page_num=ceil($total/$page_size); //获得总页数 ( 总数据条数 除以 每页显示的条数 )$offset=($page-1)*$page_size; // 获取limit第一个参数, (传入的页数-1) * 每页显示的条数//假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。$info=mysql_query('SELECT * FROM `article` limit $offset, $page_size'); //获取相应页数所需要显示的数据

  还有最后一步, 显示分页信息,如图:

  http:///content/uploadfile/201601/30c31453963130.jpg

  代码部分:

  if($page > 1){ echo ' . ($page-1) . ''>? 上页 ';}for($i = 1; $i $page_num; $i++){ if($i == $page){ echo '' . $i . ' '; continue; } echo ' . $i . ''>' . $i . ' ';}if($page $page_num){ echo ' . ($page+1) . ''>下页 ? ';}

  源代码下载链接:php实现分页原理详解【源代码】

  先阅读readme.txt文件~

  本文地址:http:///article/5.html

  欢迎转载!转载请注明本文地址,谢谢。

  转载请注明出处 何湘辉博客 PHP实现分页原理详解【附源代码】

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多