<?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 源码简洁剖析 06 - quicklist 和 listpack

    quicklist 为什么要设计 quicklist 特点 数据结构 quicklistCreate quicklistDelIndex quicklistDelEntry quicklistInse ...

  2. AT [ABC176F] Brave CHAIN

    首先可以发现这样一个事实:在每次操作当中,都有三张牌是已经固定的,只有两张牌是不确定的,于是我们可以发下每一次操作的状态可以简单的使用这两张牌来描述,于是可以考虑令 \(dp_{i, j, k}\) ...

  3. Redis 源码简洁剖析 09 - Reactor 模型

    Reactor 模型 事件驱动框架 Redis 如何实现 Reactor 模型 事件的数据结构:aeFileEvent 主循环:aeMain 函数 事件捕获与分发:aeProcessEvents 函数 ...

  4. 抽签小程序(C语言随机数)

    最近班级里需要人员抽签参加活动,闲来无事用java的(Math.random()方法||java.util.Random())写了一个随机抽签的,所以我又了解了一下C语言的随机数获取. C语言的随机数 ...

  5. java-swing-事件监听-焦点监听器

    感谢大佬:https://blog.csdn.net/weixin_44512194/article/details/93377551 开始不知道焦点是啥,其实就是打字的时候,这个一闪一闪的竖线. 与 ...

  6. JavaWeb项目中斜杠(/)表示web工程、webapps的场景

    "/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 /** * 1.ServletCont ...

  7. (一)什么是Rabbitmq

    1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. 两种方式各有优劣,打电话可以立即得到响应,但是你 ...

  8. Solution Set -「LOCAL」冲刺省选 Round XXIV

    \(\mathscr{Summary}\)   名副其实的 trash round,希望以后没有了.   A 题算好,确实一个比较关键的简化状态的点没想到,所以只拿了暴力(不考虑 \(\mathcal ...

  9. 实测Tengine开源的Dubbo功能

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 搜索关注微信公众号"捉虫大师",后端技术分享,架构设计.性能优化.源码阅读 ...

  10. Java IO 技术

    文章目录 流的概念 IO 流类体系 InputStream / OutputStream Reader / Writer 文件字节流 文件字符流 缓冲字节流 缓冲字符流 字节数组流 数据流 转换流 序 ...