php 原生分页
<?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?>">«</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?>">»</a></li>
</ul>
</body>
</html>
a标签如何传参?
a标签传参就是get穿参,格式:<a href='地址?参数名=参数值&&参数名=参数值....'>
总结分页的步骤:
第一步:要确定每页显示几条记录
第二步:知道要分页的数据总共有几条,涉及到count()查询
第三步:获取当前页,a标签会传递过来,使用$_GET接收,要注意,第一次显示列表的时候没有页码,要使用?:设置默认值
第四步:计算偏移量,公式:偏移量=(当前页-1)*每页显示的条数
第五步:执行SQL查询,limit的第一个参数就是第四步计算的结果,第二个参数就是设置的要查询的记录数
第六步:如果是数字分页,则需要计算总页数,公式:总页数=ceil(总记录数/每页显示的条数)
第七步:如果是汉字分页,需要计算上一页、下一页的值,公式:上一页=当前页-1,但是要注意:不得小于1,下一页=当前页+1,但是要注意:不能超过总页数
第八步:循环展示数据,循环展示页码
php 原生分页的更多相关文章
- mysql原生分页
select * from table limit (pageNo-1)*pageSize, pageSize; 一:分页需求: 客户端通过传递start(页码),limit(每页显示的条数)两个参数 ...
- PDO原生分页
** PDO分页** 1.PDO连接数据库 $dbh=new PDO('mysql:host=127.0.0.1;dbname=03a','root','root');//使用pdo 2.接收页码 $ ...
- thinkphp 原生分页
paginate() 是有三个参数: 第一个参数是 $listRows [int],也就是当前的页数 第二个参数是 $simple [boolean], 是否简洁模式或者总记录数 第三个参数是 $co ...
- django【原生分页】
1.urls.py url(r'^page2/',views.page2), 2.views.py from django.core.paginator import Paginator,PageNo ...
- PHP原生分页的编写
<?php $link=mysql_connect("localhost","root","admin",'news')or die( ...
- HQL 参数绑定、唯一结果、分页、投影总结(下)
分页: 在用hibernate封装的分页方法前,我们先回顾一下,Oracle里面原生分页做法 --分页查询 --(pageNo-1)*pagesize=起始行 pageNo*pagesize=结束行 ...
- django高级应用(分页功能)
django高级应用(分页功能) 1.原生分页应用 前端html代码 <!DOCTYPE html> <html lang="en"> <head&g ...
- flask 之(三) --- 筛选|分页|过滤
筛选 查询数据筛选语法:类名.query.筛选符 .all( ):获取结果集:.count( ):获取查询到的对象数量 类名.query.filter(类名.属性.运算符('xxx')).all() ...
- 【django后端分离】mysql原生查询命令后,RawQueryset类型的自定义序列化返回json格式
1:设置mysql原生分页 # 监控系统首页显示分页 def MyPagination(limitid,offsetid): limitid =str(limitid) offsetid =str(o ...
随机推荐
- git删除误传的.idea文件
问题: 提交项目的时候忘记添加.gitignore文件,误上传了文件(如.idea)如何解决?如何删除Gitee地址上项目的.idea文件?(本文以.idea文件夹举例) 拉取项目 拉取项目 git ...
- C程序:年转化天
突然想算算自己到底活了多少天了,e,就是纯属为了好玩,毕竟咱作为一名C初学者还是要多练练的- 为了好玩,加了个密码登陆的,密码是521,还有就是不太懂时间获取... 具体闰年的判断方法: 代码如下: ...
- HOOK API(三) —— HOOK 所有程序的 MessageBox
转载来源:https://www.cnblogs.com/hookjc/ 0x00 前言 本实例要实现HOOK MessageBox,包括MessageBoxA和MessageBoxW,其实现细节与H ...
- 一键部署lnmp
一键部署lnmp 提前将nginx .mysql .php 所需安装包都放在/opt目录下 脚本启动结束时,重启一下nginx 服务,就能在火狐浏览器更新出php测试页 脚本如下:(脚本里的软件 ...
- 到底什么是TORCH.NN?
该教程是在notebook上运行的,而不是脚本,下载notebook文件. PyTorch提供了设计优雅的模块和类:torch.nn, torch.optim, Dataset, DataLoader ...
- selenium学习路线
1.配置你的测试环境,针对你所学习语言,来配置你相应的selenium 测试环境.selenium 好比定义的语义---"问好",假如你使用的是中文,为了表术问好,你的写法是& ...
- 04.python语法入门--基本数据类型
# python是一门解释型的.强类型的.动态语言# 一:数字类型# 1.1 整型int:记录人的年龄.等级.号码.个数# age = 18# print(type(age))# 1.2 浮点数 ...
- 基于C6678+XC7V690T的6U VPX信号处理卡
一.概述 本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发.板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V6 ...
- 5.Flink实时项目之业务数据准备
1. 流程介绍 在上一篇文章中,我们已经把客户端的页面日志,启动日志,曝光日志分别发送到kafka对应的主题中.在本文中,我们将把业务数据也发送到对应的kafka主题中. 通过maxwell采集业务数 ...
- 防世界之Web_NewsCenter
题目: 打开实验环境一看,就一个搜索框,emmm试下有没有SQL注入点,SQL注入步骤传送门https://www.cnblogs.com/shacker/p/15917173.html 爆出数据, ...