<?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. NumPy 教程目录

    NumPy 教程目录 1 Lesson1--NumPy NumPy 安装 2 Lesson2--NumPy Ndarray 对象 3 Lesson3--NumPy 数据类型 4 Lesson4--Nu ...

  2. js 保护网站

    转载请注明来源:https://www.cnblogs.com/hookjc/ <!--禁止鼠标右键代码--><noscript><iframe src=*.html&g ...

  3. C++实现对Json数据的友好处理

    背景 C/C++客户端需要接收和发送JSON格式的数据到后端以实现通讯和数据交互.C++没有现成的处理JSON格式数据的接口,直接引用第三方库还是避免不了拆解拼接.考虑到此项目将会有大量JSON数据需 ...

  4. MATLAB基础学习(2)

    function result=mysum(a,b)%创建函数以及外部接口 s=0; for i=a:b s=s+i; end result=s; disp(s); end Matlab中ones() ...

  5. 介绍回流与重绘(Reflow & Repaint),以及如何进行优化?

    前言 回流与重绘对于前端来说可以说是非常重要的知识点了,我们不仅需要知道什么是回流与重绘,还需要知道如何进行优化.一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点的几何属性形成render ...

  6. c语言数据结构,你可能还不知道的顺序表

    数据结构顺序表 顺序表定义 1,前言 线性表的顺序存储又称为顺序表.它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻.其最大的特点就是:元素的逻辑 ...

  7. 我来教你如何将cpu使用率up起来(shell脚本[含注释])

    这个脚本是为了逃过一些资源检测的,当一些机器当前使用率偏低,会被客户要求收回,那咋办呢?使用下面的脚本,就可以留住你的机器了 假设要求cpu使用率不能低于35% 使用方法:bash up_up_up. ...

  8. Vue 源码解读(3)—— 响应式原理

    前言 上一篇文章 Vue 源码解读(2)-- Vue 初始化过程 详细讲解了 Vue 的初始化过程,明白了 new Vue(options) 都做了什么,其中关于 数据响应式 的实现用一句话简单的带过 ...

  9. 零基础自学Python十天的时候,写的一款猜数字小游戏,附源码和软件下载链接!

    自学一门语言最重要的是要及时给自己反馈,那么经常写一些小程序培养语感很重要,写完可以总结一下程序中运用到了哪些零散的知识点. 本程序中运用到的知识点有: 1.输入输出函数 (input.print) ...

  10. JDK、JRE 和 JVM 有什么用,它们是怎样运行的

    JDK如何运作? JDK 功能 以下是JDK的重要组件: JDK 和 JRE:程序员通过使用JDK 创建由 JRE 运行的 Java 程序,其中包括 JVM 和类库. 类库:是一组可动态加载的库,Ja ...