PHP分页原理
来源:互联网 发布:linux驱动书籍 编辑:程序博客网 时间:2024/06/04 23:30
分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解。
每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以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……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。
二、分页代码说明:
一、分页原理:
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PReviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以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……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。
二、分页代码说明:
class PageController { private $page; //当前页 private $pagenum; //总页数// <a href="#" class="nobr">共33页</a> public function __construct($page, $pagenum,$url) { $this->page = $page; $this->pagenum = $pagenum; $this->url=$url; } //首页 private function first() { if ($this->page == 1) { @$html.='<a href="#" class="nobr">1</a>'; } else { @$html.='<a href="' . U($this->url, array('page' => $this->page)) . '" class="nobr" >' . $this->page . '</a>'; } return $html; } //上一页 private function prev() { $html = '<div class="page">'; if ($this->page == 2) { @$html.='<a href="' . U($this->url) . '">上一页</a>'; } else { @$html.='<a href="' . U($this->url, array('page' => $this->page - 1)) . '">上一页</a>'; } return $html; } //下一页 private function next() { if ($this->page == $this->pagenum) { @$html.='<a href="' . U($this->url, array('page' =>$this->pagenum)) . '" class="pink">下一页</a>'; } else { @$html.='<a href="' . U($this->url, array('page' => $this->page + 1)) . '" class="pink">下一页</a>'; } return $html; } //尾页 private function last() { if ($this->page == $this->pagenum) { @$html.='<a class="nobr">共' . $this->pagenum . '页</a> <a class="input"><input type="text" class="page" name="page"></a><a id="get_page" class="pink">跳转</a> </div>'; } else { @$html.='<a class="nobr">共' . $this->pagenum . '页</a> <a class="input"><input type="text" class="page" name="page"></a><a id="get_page" class="pink">跳转</a> </div>'; } return $html; } public function pagelist() { return array('prev' => $this->prev(), 'first' => $this->first(), 'next' => $this->next(), 'last' => $this->last()); }}
阅读全文
0 0
- php:PHP分页原理
- PHP分页的原理
- php分页原理
- PHP分页原理
- php分页原理
- PHP 分页原理解析
- php分页原理
- PHP+MYSQL分页原理
- PHP分页原理
- PHP分页实现原理
- PHP分页原理
- php分页原理
- PHP+MYSQL分页原理
- PHP+MYSQL分页原理
- php 分页原理详解
- PHP+MYSQL分页原理
- php分页原理
- php分页原理
- 算法导论 最小生成树MST-KRUSKAL
- 【图】图的遍历以及最小生成树
- Spring顾问
- 霍夫丁不等式及其他相关不等式证明
- MaterialDesign(三)
- PHP分页原理
- Surround360 Render目录下RENDER文档——中文翻译
- 自省
- 快速排序和随机快速排序
- HDU1092-A+B for Input-Output Practice (IV)
- mybatis配置文件--未和spring整合前,jdbc
- android 集成Zxing教程
- Hmaster 启动后关闭。
- 语音识别的基础知识与CMUsphinx介绍