1. 分页查询
select * from tableName limit [start,] count;
- start: 表示起始时的记录位置 ,默认从0开始计算,(可以省略,起始位置 为0)
- count: 表示获取数据的条数
2. 起始位置计算
start = (page - 1) * count
3. 总页数计算
allPage = ceil(allRow / pageSize);
所有记录条数 / 页面显示条数
后通过 ceil
进行向上取整
4. 数学计算函数
ceil 向上进一取整
ceil(float $value): float
floor 舍去取整
floor(float $value): float
round 四舍五入取整
round(float $val, int $precision = 0, int $mode = PHP_ROUND_HALF_UP): float
<?php var_dump(round(3.4)); var_dump(round(3.5)); var_dump(round(3.6)); var_dump(round(3.6, 0)); var_dump(round(5.045, 2)); var_dump(round(5.055, 2)); var_dump(round(345, -2)); var_dump(round(345, -3)); var_dump(round(678, -2)); var_dump(round(678, -3)); ?>
2. 案例讲解(班级数据分页显示)
<?php
// 连接数据库
$url = "mysql:host=mysql;dbname=database_lesson_30511_14_11204";
$user = "lesson_30511_14_11204";
$passwd = "c6e5d1f2cd01ae3ac950a5745ea6fbdf";
$pdo = new PDO($url,$user,$passwd);
// 相关变量
$page = 1; // 当前页码
$pageSize = 7; // 当前每页显示记录数
$start = 0; // 获取分页数据时的起始位置
$allNum = 0; // 表中所有的记录数
$allPage = 0; // 表中所有的页数
// 获取所有的记录数
$sql = "select count(*) from class;";
$st = $pdo->query($sql);
// 保存所有的记录数
$allNum = $st->fetch()[0];
// 根据所有记录数和每页显示记录数,计算出所有页数
$allPage = ceil($allNum/$pageSize);
// 通过查询参数,获取当前页码
if(isset($_GET['p'])){
$page = $_GET['p'];
}
// 通过页码云计算起始查询位置,进进行获取数据
$start = ($page-1)*$pageSize;
$sql = "select * from class limit {$start}, {$pageSize}";
$st = $pdo->query($sql);
$res = $st->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#content{
width:1200px;
text-align: center;
margin:0 auto;
background: cyan;
}
#btn{
width:1200px;
list-style: none;
display: flex;
justify-content: center;
}
#btn>li{
border: 1px solid blue;
border-radius:10px;
width:100px;
margin:0 50px;
}
a{
text-decoration: none;
}
</style>
</head>
<body>
<div id="content">
<div id='title'>
<h1>班级信息显示</h1>
</div>
<div id='table'>
<table border="1" align='center' width="1000" >
<tr background="#ccc">
<th>班级名称</th>
<th>班主任</th>
<th>班级人数</th>
<th>班主任电话</th>
</tr>
<!--对查询数据进行显示-->
<?php foreach($res as $val){ ?>
<tr>
<td> <?php echo $val["name"]; ?></td>
<td> <?php echo $val["teacher_name"]; ?></td>
<td> <?php echo $val["number"]; ?></td>
<td> <?php echo $val["phone"]; ?></td>
</tr>
<?php } ?>
</table>
</div>
<!--控制按钮-->
<div id='ctl'>
<ul id='btn'>
<li>
<!--如果是到首页,固定页码为1-->
<a href="<?php echo "index.php?p=1"; ?>">
首页
</a>
</li>
<li>
<!--如果当前页面不是第一页,则可以进行页面减一,跳到上一次,否则一直为第一页-->
<a href="<?php
if($page != 1){
echo "index.php?p=" . ($page - 1);
}else{
echo "index.php?p=1";
}
?>">
上一页
</a>
</li>
<li>
<!--如果当前页面不是第一页,则可以进行页面加一,跳到下一次,否则一直为末页-->
<a href="<?php
if($page != $allPage){
echo "index.php?p=" . ($page + 1);
}else{
echo "index.php?p=" . $allPage;
}
?>">
下一页
</a>
</li>
<li>
<!-- 固定页码为最后一页-->
<a href="<?php echo "index.php?p=" . $allPage;?>">
末页
</a>
</li>
</ul>
</div>
</div>
</body>
</html>