数据分页概述
对大量数据进行分页显示是 Web 开发中最常见的情况,但大多刚开始接触 Web 开发的开发人员,对分页技术往往比较迷惘,本节教程以一个分页显示留言板的数据为例就来演示一下 PHP 中基本的数据分页显示原理。
本节教程需要用到的 PHP基础知识 :
PHP 预定义 $_GET 变量来接收 URL 参数信息,具体参见《PHP $_GET》。
MySQL 数据库表基础知识,具体参见《MySQL 基本概念》。
数据准备
假设储存留言的数据表(guestbook)数据如下:
id
nickname
content
createtime
1
admin
admin@5idev.com
留言测试
1264167501
2
user
user@163.com
大家好
1264168127
3
小明
xiaoming@163.com
做得好,继续努力。。
1264168865
4
小张
xiaozhang@163.com
来看看
1264169118
5
小丽
xiaoli@tom.com
haha
1283276566
6
Tom
tom@gmail.com
Hello
1283336218
7
Jack
jack@hotmail.com
okok
1283336315
8
admin
admin@5idev.com
嗯嗯
1283336315
9
阿里巴巴
alibaba@5idev.com
来看看
1283337158
10
路人甲
haha@163.com
哈哈哈
1283338228
建表 SQL 参考如下:
CREATE TABLE `guestbook` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`nickname` char(15) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`content` text NOT NULL,
`createtime` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
分页原理
目的很简单,就是将较多数据记录,分页显示出来,每一页显示设定的数据条数。
分页显示格式如下:
共 10 条留言 [1] 2 3
该格式比较简单,只显示了总的数据和各个分页数。当前页面显示为 [1] 这样的格式,非当前页面的页数则显示为超链接格式。
PHP 分页技术核心在于确定当前的页数,然后利用 MySQL 的 LIMIT 关键字来指定输出对应的记录数。
如当前是第 1 页时,那么就是 LIMIT 0,4(假设一页输出 4 条记录),第 2 页时,就是 LIMIT 4,4,第 3 页时,就是 LIMIT 8,4 … 依此类推,第 n 页时,就是 LIMIT (n-1)*4,4 。
而当前页数 $p 这个参数,通过 URL 来获取。如 http://127.0.0.1/guestbook/index.php?p=2 这个这个 URL 链接,表示当前为第 2 页,PHP 中通过 $_GET['p'] 来取得对应的页数值 2 。而对于首页,则没有 $p 这个参数,那么就设定为默认值 1 即可。