1.页码来源:$_GET['page']
2.三元越界检查:$page<1,赋值:1
3.定义每页显示数量:$num
4.获取数据量:$users
5.计算总页数:$pages = ceil($user/$num)
6.获取偏移量:offset=($page-1)*$num
7.获取分页数据:select * from users limit $offset,$num;
<?php//页码来自GET参数$page = $_GET['page'] ?? 1;//三元越界检查$page = $page < 1 ? 1 : $page;//每页显示数量$num = 5;//获取分页数据$db = new PDO('mysql:host=localhost;dbname=phpedu', 'root', 'root');$sql = 'select * from users limit ?,?';$stmt = $db->prepare($sql);$stmt->bindParam(1, $offset, PDO::PARAM_INT);$stmt->bindParam(2, $num, PDO::PARAM_INT);//计算偏移量$offset = ($page - 1) * $num;$stmt->execute();// $stmt->debugDumpParams();$users = $stmt->fetchAll(PDO::FETCH_ASSOC);// print_r($users);//计算总页数// 1.计算总数量$sql = "SELECT count(id) as total FROM users";$stmt = $db->prepare($sql);$stmt->execute();//将字段 total 绑定到一个变量上$stmt->bindColumn('total', $total);$stmt->fetch();// echo $total;// 2.计算总页数$pages = ceil($total / $num);echo $page;?><!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></head><body><table border="1" width='300'><caption>用户表</caption><thead><tr><th>用户ID</th><th>用户名</th><th>邮箱</th><th>性别</th></tr></thead><tbody><?php foreach ($users as $user) : ?><tr><td><?= $user['id']; ?></td><td><?= $user['uname']; ?></td><td><?= $user['email']; ?></td><td><?= $user['sex'] ? '男' : '女'; ?></td></tr><?php endforeach ?></tbody></table><p><?php $style = 'style="background:red"'; ?><a href="?page=<?= $page - 1 ?>">上一页</a><?php for ($i = 1; $i <= $pages; $i++) : ?><?php $active = ($i == $_GET['page']) ? $style : null; ?><a href=" ?page=<?= $i ?>" <?= $active ?>><?= $i; ?></a><?php endfor ?><a href="?page=<?= ($page != $pages) ? ($page + 1) : $page ?>">下一页</a></p></body></html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号