php分页教程,php实现分页的原理及步骤
一、封装配置信息
1、我们可以做一个配置文件config.php。将需要使用到的配置全部设置为常量,代码如下:<?php
//数据库服务器
define('DB_HOST', 'localhost');
//数据库用户名
define('DB_USER', 'root');
//数据库密码
define('DB_PWD', 'secret');
//库名
define('DB_NAME', 'book');
//字符集
define('DB_CHARSET', 'utf8');
2、2.我们将connection.php页面抽取出来,以后需要连接数据库的时候只需要包含connection.php文件即可。
代码如下:<?php
include 'config.php';$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
if (mysqli_errno($conn))
{ mysqli_error($conn);
exit;
}
mysqli_set_charset($conn, DB_CHARSET);
?>
我们在以后每个文件使用中直接包含 connection.php文件就可以实现数据库连接了:include 'connection.php';
二、显示分页实现
页要实现分页中包含以下几个基本元素:
我们在控制页码的时候,都是通过URL地址栏传入页码值来实现的页码控制。在page.php后面接上页码的相关信息,我们就能够算出更多的有效信息。url控制分页的效果如下:
在代码实现中,是通过limit后的偏移量(offset)和数量(num),这两个值真正实现的分页。limit offset , num
假设每页显示5条。最终得到的分页中控制limit公式如下:offset的值为 (n-1)*5
num 为规定的5
三、实现步骤;
1、计算出分页所需参数
1-1、总数通过查询user表的count(id),得到总数$count。
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data['c'];
1-2、当前页
刚进入page.php页时,url为http://www.php.com/page.php,后面是不存在 ?page=1 页面标识号的。
因此我们需要手动创建一个页面标识号传给当前页码变量$page。
我们害怕用户传的页面中存在小数等,所以我们做一次强制的类型转换:(int) $_GET['page']。
第一种写法:$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
第二种写法:if (isset($_GET['page'])) {
$page = (int) $_GET['page'];
} else {
$page = 1;
}
1-3、最后一页
每一页一定是一个整数。就跟小学的时候数学一样。平均有5.6个人应该准备几个苹果。答案一定是6个。
如果页面出来了20.3个页面,一定是使用进一法取整函数ceil。让分页数变为21。
我们用总数除以每页显示的数据条数,就得到了总页数了。//每页显示数
$num = 5;
$total = ceil($count / $num);
1-4、上下页异常情况控制
如果用户的在第一页点击了上一页,在最后一页点击了下一页怎么办呢?
这样的话数据会超出范围,而造成我们分页时无数据显示。
显然这种异常情况需要考虑到。因此,如果在分页时在第一页减一时,我们就让他为第一页。
在最后一页加一时,我们就让他为最后一页,即完成了异常控制。if ($page <= 1) {
$page = 1;
}
if ($page >= $total) {
$page = $total;
}
2、SQL语句
我们之前说过分页的核心是通过SQL语句中的offset和num来控制每页显示数。$num = 5;
$offset = ($page - 1) * $num;
我们将$num和$offset应用于SQL语句中:$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";
控制好URI中的分页值echo '
首页
上一页
下一页
尾页
当前是第 ' . $page . '页 共' . $total . '页
';
四、整体代码实现include 'connection.php';
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//得到总的用户数
$count = $data['c'];
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
/*
if (isset($_GET['page'])) {
$page = (int) $_GET['page'];
} else {
$page = 1;
}
*/
//每页显示数
$num = 5;
//得到总页数
$total = ceil($count / $num);
if ($page <= 1) {
$page = 1;
}
if ($page >= $total) {
$page = $total;
}
$offset = ($page - 1) * $num;
$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result)) {
//存在数据则循环将数据显示出来
echo '
while ($row = mysqli_fetch_assoc($result)) {
echo '
';
echo '
' . $row['username'] . '';
echo '
' . date('Y-m-d H:i:s', $row['createtime']) . '';
echo '
' . long2ip($row['createip']) . '';
echo '
编辑用户';
echo '
删除用户';
echo '
';
}
echo '
首页 上一页 下一页 尾页 当前是第 ' . $page . '页 共' . $total . '页 ';
echo '
';
} else {
echo '没有数据';
}
mysqli_close($conn);
以上内容便实现了简单的分页功能,相了解更多相关内容请访问PHP中文网:PHP视频教程
php分页教程,php实现分页的原理及步骤相关推荐
- php分页教程,php 如何分页 教程
php 如何分页 教程这是一篇初级入门的教程了,我们这个与asp分页有一点的区别了,下面我们就来讲讲最简单的php分页代码吧,我们首先要有一个数据库.假如有我们有了一个数数据库里面有一张表a下面就是我 ...
- 黑马lavarel教程---13、分页
黑马lavarel教程---13.分页 一.总结 一句话总结: - lavarel里面的分页操作和tp里面的分页操作几乎是一模一样的 - 控制器:$data=Lesson::paginate(2); ...
- php分页技术的作用,分页原理技术细节剖析(php+mysql)实例
提到分页,大家都不陌生,在我们日常浏览网页时常遇到,尤其新闻文章列表等都有分页,如下图所示: 分页实例 下面,通过一个实例为大家剖析一下分页原理上技术细节. 一.功能开发思路 在分页功能的实现前,先做 ...
- mysql分页查询关键_MySQL优化教程之超大分页查询
背景 基本上只要是做后台开发,都会接触到分页这个需求或者功能吧.基本上大家都是会用MySQL的LIMIT来处理,而且我现在负责的项目也是这样写的.但是一旦数据量起来了,其实LIMIT的效率会极其的低, ...
- oracle 分页_Mybatis:PageHelper分页插件源码及原理剖析
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:祖大俊 my.oschina.net/zudajun/blog/745232 Pag ...
- 用了这么久的PageHelper,你知道原生的分页查询原理和步骤吗
你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 juejin.cn/post/6987553953156169742 推荐:https://www ...
- mybatis常见分页技术和自定义分页原理实战
文章目录 前言 mybatis简单了解 分页类型 分页方式 1.数组分页 2.数据库分页 3.Rowbounds分页 4.自定义插件分页 自定义分页原理 自定义分页实战 聊下第三方分页插件 pageH ...
- React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发
React Table 表格组件使用教程 react-table 安装和使用 React Table 表格排序功能 React Table 表格搜索过滤筛选功能 React Table 表格分页功能 ...
- poi实现多个word文档合并,加超简单分页教程
1.pom包 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</art ...
最新文章
- Database · 理论基础 · 关于一致性协议和分布式锁
- GitLab 已迁移至谷歌云平台,并表示目前运行良好
- OpenCV图像操作的实例(附完整代码)
- JD商家后台管理的细节
- 电路常识性概念(3)-TTL与CMOS集成电路
- Java中TreeMap和TreeSet的底层实现
- 面试题 03.02. 栈的最小值/面试题30. 包含min函数的栈/155. 最小栈
- linux shell 函数 格式化,速查笔记(linux shell编程)
- Linux创建内核线程kthread_create的用法介绍
- docker安装和启动zookeeper,数据导入及导出
- opencv常用函数整理(一)
- Java快速排序算法
- 关于Alipay支付宝接口(Java版)下
- config.guess: unable to guess system type、config.sub: missing argument
- Cloud Native Infrastructures Meetup 精彩回顾(内含 PPT 下载)
- libsvm python Linux Ubuntu下编程操作实践
- Windows下 DirectX SDK 配置检验
- 对话阿里云弹性计算负责人褚霸:把计算做到极致,关键还不加价!
- 华氏温度转换为摄氏温度(PTA厦大慕课)
- VMware虚拟机不能上网了怎么办
热门文章
- AndroidStudio中忽略大小写设置
- 【转】Google 的秘密- PageRank 彻底解说 中文版
- HTML5新标签-结构标签、表单元素、媒体标签
- 养殖场猪舍智能巡检机器人方案
- 初学32,对CubeMX沙箱段的理解
- 凝血酶分子机器人_《自然》子刊:厉害啊!中科院团队发明世界第一个智能抗癌DNA纳米机器人,可精准阻断肿瘤血管,饿死肿瘤 | 奇点猛科技...
- Unity中prefabs的学习心得以及应用理解
- C++ 关于extern 全局变量的应用
- 不用找,你想要的车样机图片素材都在这里
- 完美解决,抖音高清直播,解决服务升级中,功能暂不可用!