<?php
// 连接数据库
$link = mysqli_connect("127.0.0.1", "root", "root", "1909A");
// 分页的第一步:确定每页显示的条数
$pageSize = 3; // 分页的第二步:计算总记录数
$res = mysqli_query($link, "select count(*) as num from student");
$count = mysqli_fetch_assoc($res);
$number = $count['num']; // 分页的第三步:获取当前页
$page = $_GET['p'] ? $_GET['p'] : 1; // 分页的第四步:计算偏移量= (当前页-1)*每页显示的条数
$pageLimit = ($page - 1) * $pageSize; // 书写查询语句
$sql = "select * from student limit $pageLimit,$pageSize";
// 执行SQL语句
$res = mysqli_query($link, $sql);
// 将查询后返回的对象转换为数组
// mysqli_fetch_all(要转换的对象,类型:1 代表关联数组,2代表索引数组)
$data = mysqli_fetch_all($res, 1);
// 计算页数:ceil(总记录数/每页显示的条数)
$pageNum = ceil($number / $pageSize);
// 计算上一页的页码=当前页-1,但是不能小于1
$upPage = $page - 1 < 1 ? 1 : $page - 1;
// 计算下一页的页码=当前页+1,但是小于总页数
$nextPage = $page + 1 > $pageNum ? $pageNum : $page + 1;
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Bootstrap 实例 - 边框表格</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<a href="add_form.php"><button type="button" class="btn btn-success">添加</button></a>
<table class="table table-bordered">
<caption>1909A班学生信息列表</caption>
<thead>
<tr>
<th>学生编号</th>
<th>学生姓名</th>
<th>年龄</th>
<th>性别</th>
<th>手机号</th>
<th>班级</th>
<th>头像</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php
foreach ($data as $key => $val) {
?>
<tr>
<td><?php echo $val['stu_id'] ?></td>
<td><?php echo $val['stu_name'] ?></td>
<td><?php echo $val['stu_email'] ?></td>
<td><?php echo $val['stu_sex'] ?></td>
<td><?php echo $val['stu_tel'] ?></td>
<td><?php echo $val['class_name'] ?></td>
<td><?php echo $val['stu_photo'] ?></td>
<td>
<button type="button" class="btn btn-danger">删除</button>
<button type="button" class="btn btn-success">修改</button>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<ul class="pagination">
<!-- 上一页-->
<li><a href="list.php?p=<?php echo $upPage?>">&laquo;</a></li>
<!-- 数字分页-->
<?php
for ($i = 1; $i <= $pageNum; $i++) {
?>
<li><a href="list.php?p=<?php echo $i ?>"><?php echo $i ?></a></li>
<?php
}
?>
<!-- 下一页-->
<li><a href="list.php?p=<?php echo $nextPage?>">&raquo;</a></li>
</ul>
</body>
</html>
a标签如何传参?

a标签传参就是get穿参,格式:<a href='地址?参数名=参数值&&参数名=参数值....'>

总结分页的步骤:

第一步:要确定每页显示几条记录

第二步:知道要分页的数据总共有几条,涉及到count()查询

第三步:获取当前页,a标签会传递过来,使用$_GET接收,要注意,第一次显示列表的时候没有页码,要使用?:设置默认值

第四步:计算偏移量,公式:偏移量=(当前页-1)*每页显示的条数

第五步:执行SQL查询,limit的第一个参数就是第四步计算的结果,第二个参数就是设置的要查询的记录数

第六步:如果是数字分页,则需要计算总页数,公式:总页数=ceil(总记录数/每页显示的条数)

第七步:如果是汉字分页,需要计算上一页、下一页的值,公式:上一页=当前页-1,但是要注意:不得小于1,下一页=当前页+1,但是要注意:不能超过总页数

第八步:循环展示数据,循环展示页码

 

php 原生分页的更多相关文章

  1. mysql原生分页

    select * from table limit (pageNo-1)*pageSize, pageSize; 一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数 ...

  2. PDO原生分页

    ** PDO分页** 1.PDO连接数据库 $dbh=new PDO('mysql:host=127.0.0.1;dbname=03a','root','root');//使用pdo 2.接收页码 $ ...

  3. thinkphp 原生分页

    paginate() 是有三个参数: 第一个参数是 $listRows [int],也就是当前的页数 第二个参数是 $simple [boolean], 是否简洁模式或者总记录数 第三个参数是 $co ...

  4. django【原生分页】

    1.urls.py url(r'^page2/',views.page2), 2.views.py from django.core.paginator import Paginator,PageNo ...

  5. PHP原生分页的编写

    <?php $link=mysql_connect("localhost","root","admin",'news')or die( ...

  6. HQL 参数绑定、唯一结果、分页、投影总结(下)

    分页: 在用hibernate封装的分页方法前,我们先回顾一下,Oracle里面原生分页做法 --分页查询 --(pageNo-1)*pagesize=起始行 pageNo*pagesize=结束行 ...

  7. django高级应用(分页功能)

    django高级应用(分页功能) 1.原生分页应用 前端html代码 <!DOCTYPE html> <html lang="en"> <head&g ...

  8. flask 之(三) --- 筛选|分页|过滤

    筛选 查询数据筛选语法:类名.query.筛选符 .all( ):获取结果集:.count( ):获取查询到的对象数量 类名.query.filter(类名.属性.运算符('xxx')).all() ...

  9. 【django后端分离】mysql原生查询命令后,RawQueryset类型的自定义序列化返回json格式

    1:设置mysql原生分页 # 监控系统首页显示分页 def MyPagination(limitid,offsetid): limitid =str(limitid) offsetid =str(o ...

随机推荐

  1. Redis 源码简洁剖析 07 - main 函数启动

    前言 问题 阶段 1:基本初始化 阶段 2:检查哨兵模式,执行 RDB 或 AOF 检测 阶段 3:运行参数解析 阶段 4:初始化 server 资源管理 初始化数据库 创建事件驱动框架 阶段 5:执 ...

  2. windows 崩溃不提示

    转载请注明来源:https://www.cnblogs.com/hookjc/ 碰到某些程序崩溃时弹出带红色叉叉的错误窗口或者是叫你选择调试或关闭的窗口,很碍眼.不过平时也没去理它,点掉就好. 今天客 ...

  3. 版本控制SVN

    为什么需要版本控制软件 代码的冻结 避免在重大的考核之前改动代码 每个稳定版本都在服务器保存进度,随时可以回退 需求频繁的变化不要改动稳定的代码,不要改别人写好的代码 为什么需求会变化?有时候产品自己 ...

  4. LAMP以及各组件的编译安装

    LAMP以及各组件的编译安装 目录 LAMP以及各组件的编译安装 一.LAMP 1. LAMP概述 2. 各组件的主要作用 3. 平台环境的安装顺序 二.编译安装apache httpd 1. 关闭防 ...

  5. docker基础——3.存储卷

    把宿主机的目录或文件链接到容器的目录或文件,可以避免写时复制对高I/O操作的影响,也避免容器销毁时数据丢失. 1. 只指定容器的目录位置,-v docker run -it --name bbox1 ...

  6. 2022寒假集训day5

    day5 五道栈的题加上字符串. 单调队列. T1 表达式括号匹配   洛谷P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@&q ...

  7. 关于Miller-Rabin与Pollard-Rho算法的理解(素性测试与质因数分解)

    前置 费马小定理(即若P为质数,则\(A^P\equiv A \pmod{P}\)). 欧几里得算法(GCD). 快速幂,龟速乘. 素性测试 引入 素性测试是OI中一个十分重要的事,在数学毒瘤题中有着 ...

  8. 当Synchronized遇到这玩意儿,有个大坑,要注意!

    你好呀,我是歪歪. 前几天在某技术平台上看到别人提的关于 Synchronized 的一个用法问题,我觉得挺有意思的,这个问题其实也是我三年前面试某公司的时候遇到的一个真题,当时不知道面试官想要考什么 ...

  9. 拔掉网线后, 原本的 TCP 连接还存在吗?

    大家好,我是小林. 今天,聊一个有趣的问题:拔掉网线几秒,再插回去,原本的 TCP 连接还存在吗? 可能有的同学会说,网线都被拔掉了,那说明物理层被断开了,那在上层的传输层理应也会断开,所以原本的 T ...

  10. Solution -「CF 510E」Fox And Dinner

    \(\mathcal{Description}\)   Link.   给定正整数集合 \(\{a_n\}\),求一种把这些数放置在任意多个圆环上的方案,使得每个环的大小大于 \(2\) 且环上相邻两 ...