一、封装配置信息

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实现分页的原理及步骤相关推荐

  1. php分页教程,php 如何分页 教程

    php 如何分页 教程这是一篇初级入门的教程了,我们这个与asp分页有一点的区别了,下面我们就来讲讲最简单的php分页代码吧,我们首先要有一个数据库.假如有我们有了一个数数据库里面有一张表a下面就是我 ...

  2. 黑马lavarel教程---13、分页

    黑马lavarel教程---13.分页 一.总结 一句话总结: - lavarel里面的分页操作和tp里面的分页操作几乎是一模一样的 - 控制器:$data=Lesson::paginate(2); ...

  3. php分页技术的作用,分页原理技术细节剖析(php+mysql)实例

    提到分页,大家都不陌生,在我们日常浏览网页时常遇到,尤其新闻文章列表等都有分页,如下图所示: 分页实例 下面,通过一个实例为大家剖析一下分页原理上技术细节. 一.功能开发思路 在分页功能的实现前,先做 ...

  4. mysql分页查询关键_MySQL优化教程之超大分页查询

    背景 基本上只要是做后台开发,都会接触到分页这个需求或者功能吧.基本上大家都是会用MySQL的LIMIT来处理,而且我现在负责的项目也是这样写的.但是一旦数据量起来了,其实LIMIT的效率会极其的低, ...

  5. oracle 分页_Mybatis:PageHelper分页插件源码及原理剖析

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:祖大俊 my.oschina.net/zudajun/blog/745232 Pag ...

  6. 用了这么久的PageHelper,你知道原生的分页查询原理和步骤吗

    你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 juejin.cn/post/6987553953156169742 推荐:https://www ...

  7. mybatis常见分页技术和自定义分页原理实战

    文章目录 前言 mybatis简单了解 分页类型 分页方式 1.数组分页 2.数据库分页 3.Rowbounds分页 4.自定义插件分页 自定义分页原理 自定义分页实战 聊下第三方分页插件 pageH ...

  8. React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发

    React Table 表格组件使用教程 react-table 安装和使用 React Table 表格排序功能 React Table 表格搜索过滤筛选功能 React Table 表格分页功能 ...

  9. poi实现多个word文档合并,加超简单分页教程

    1.pom包 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</art ...

最新文章

  1. Database · 理论基础 · 关于一致性协议和分布式锁
  2. GitLab 已迁移至谷歌云平台,并表示目前运行良好
  3. OpenCV图像操作的实例(附完整代码)
  4. JD商家后台管理的细节
  5. 电路常识性概念(3)-TTL与CMOS集成电路
  6. Java中TreeMap和TreeSet的底层实现
  7. 面试题 03.02. 栈的最小值/面试题30. 包含min函数的栈/155. 最小栈
  8. linux shell 函数 格式化,速查笔记(linux shell编程)
  9. Linux创建内核线程kthread_create的用法介绍
  10. docker安装和启动zookeeper,数据导入及导出
  11. opencv常用函数整理(一)
  12. Java快速排序算法
  13. 关于Alipay支付宝接口(Java版)下
  14. config.guess: unable to guess system type、config.sub: missing argument
  15. Cloud Native Infrastructures Meetup 精彩回顾(内含 PPT 下载)
  16. libsvm python Linux Ubuntu下编程操作实践
  17. Windows下 DirectX SDK 配置检验
  18. 对话阿里云弹性计算负责人褚霸:把计算做到极致,关键还不加价!
  19. 华氏温度转换为摄氏温度(PTA厦大慕课)
  20. VMware虚拟机不能上网了怎么办

热门文章

  1. AndroidStudio中忽略大小写设置
  2. 【转】Google 的秘密- PageRank 彻底解说 中文版
  3. HTML5新标签-结构标签、表单元素、媒体标签
  4. 养殖场猪舍智能巡检机器人方案
  5. 初学32,对CubeMX沙箱段的理解
  6. 凝血酶分子机器人_《自然》子刊:厉害啊!中科院团队发明世界第一个智能抗癌DNA纳米机器人,可精准阻断肿瘤血管,饿死肿瘤 | 奇点猛科技...
  7. Unity中prefabs的学习心得以及应用理解
  8. C++ 关于extern 全局变量的应用
  9. 不用找,你想要的车样机图片素材都在这里
  10. 完美解决,抖音高清直播,解决服务升级中,功能暂不可用!