PHP-分页具体实现及代码
来源:互联网 发布:sql查询语句排除相同 编辑:程序博客网 时间:2024/06/06 07:20
数据分页概述
对大量数据进行分页显示是 Web 开发中最常见的情况,但大多刚开始接触 Web 开发的开发人员,对分页技术往往比较迷惘,本节教程以一个分页显示留言板的数据为例就来演示一下 PHP 中基本的数据分页显示原理。
本节教程需要用到的 PHP基础知识 :
- PHP 预定义 $_GET 变量来接收 URL 参数信息,具体参见《PHP $_GET》。
- if 流程控制,具体参见《PHP if ... else 流程控制》。
- MySQL 数据库表基础知识,具体参见《MySQL 基本概念》。
- MySQL 数据查询,具体参见《MySQL Select From 查询数据》
- MySQL 数据查询,具体参见《MySQL LIMIT 限定查询记录数》。
数据准备
假设储存留言的数据表(guestbook)数据如下:建表 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 即可。
代码部分
数据库链接及参数设定
//数据库连接 $con = @mysqli_connect("127.0.0.1","root","root","gbook"); if(!$con){ die("数据库连接错误".mysqli_connect_error()); } mysqli_query($con,"set names 'utf8'"); //显示每页的留言数 $pagesize = 4;
输出当前页数据
//确定页数p参数@$p = $_GET['p']?$_GET['p']:1;//数据指针$offset = ($p-1)*$pagesize;//查询本页现实的数据$query_sql = "select * from guestbook order by id desc limit $offset,$pagesize";# echo $query_sql;$result = mysqli_query($con,$query_sql);//循环输出while($gblist = mysqli_fetch_array($result)){echo '<a href="',$gblist['nickname'],'">',$gblist['nickname'],'</a>';echo '发表于:',date("Y-m-d H:i",@$gblist[createtime]),'<br/>';echo '内容:',$gblist['content'],'<br/><hr/>';}
确定当前页参数 $p 中,使用了一个三元运算符:
$p = $_GET['p']?$_GET['p']:1;
可以这么通俗的理解该运算符:$_GET['p'] 存在吗?如果存在,那么 $p = $_GET['p'] ,如果不存在,那么 $p = 1 。
接下来就是读取当前页面显示数据的具体代码,该部分可参考《MySQL Select From 查询数据》。
输出分页格式
//分页代码//计算留言总数$count_result = mysqli_query($con,"select count(*) as count from guestbook");$count_array = mysqli_fetch_array($count_result);//计算总的页数$pagenum = ceil($count_array['count']/$pagesize);echo '共',$count_array['count'],'条留言';//循环输出个页数及链接if($pagenum>1){for($i = 1;$i<=$pagenum;$i++){if($i == $p){echo '[',$i,']';}else{echo ' <a href="gbook.php?p=',$i,'">',$i,'</a>';}}}
完整代码
完整代码如下:
<?php//数据库连接$con = @mysqli_connect("127.0.0.1","root","root","gbook");if(!$con){die("数据库连接错误".mysqli_connect_error());}mysqli_query($con,"set names 'utf8'");//显示每页的留言数$pagesize = 4;//确定页数p参数@$p = $_GET['p']?$_GET['p']:1;//数据指针$offset = ($p-1)*$pagesize;//查询本页现实的数据$query_sql = "select * from guestbook order by id desc limit $offset,$pagesize";# echo $query_sql;$result = mysqli_query($con,$query_sql);//循环输出while($gblist = mysqli_fetch_array($result)){echo '<a href="',$gblist['nickname'],'">',$gblist['nickname'],'</a>';echo '发表于:',date("Y-m-d H:i",@$gblist[createtime]),'<br/>';echo '内容:',$gblist['content'],'<br/><hr/>';}//分页代码//计算留言总数$count_result = mysqli_query($con,"select count(*) as count from guestbook");$count_array = mysqli_fetch_array($count_result);//计算总的页数$pagenum = ceil($count_array['count']/$pagesize);echo '共',$count_array['count'],'条留言';//循环输出个页数及链接if($pagenum>1){for($i = 1;$i<=$pagenum;$i++){if($i == $p){echo '[',$i,']';}else{echo ' <a href="gbook.php?p=',$i,'">',$i,'</a>';}}}?>
实现效果
2 1
- PHP-分页具体实现及代码
- php分页代码及总结
- php mysql分页实现代码
- php 经典分页实现代码
- php分页代码简单实现
- PHP分页原理+代码实现
- JDBC连接数据库及具体实现代码
- php分页和具体使用
- [php] Thinkphp实现上一篇下一篇及跳转分页代码
- php 结果集的分页实现代码
- php 批量替换程序的具体实现代码
- 分页的具体实现方法
- PHP文件上传的具体思路及实现
- 用PHP文件上传的具体思路及实现
- php短信接口开发经验及具体开发实现
- PHP彩信接口开发经验及具体开发实现
- PHP语音SDK接口开发经验及具体开发实现
- PHP&MYSQL分页原理及实现
- 关于MKAnnotation的循环利用和一开始显示标注的问题
- 经典动态规划1
- ubuntu 交叉编译arm linux 内核小例子
- C++二进制枚举子集
- 提高篇-统计字符串有多长?
- PHP-分页具体实现及代码
- 三子棋小游戏
- 利用knockout快速创建日历插件--(一个初学者的练习)
- Markdown语法
- 使用Python获取网段IP个数以及地址清单
- 蓝桥杯-基础试题-试笔-杨辉三角
- js获取css属性中的值
- 深度学习框架总结
- 链表倒数第n个节点