批改状态:合格
老师批语:分页, 看上去挺简单的功能, 实际实现起来, 还是非常麻烦的, 不是吗?
<?php// 连接数据库try {$pdo = new PDO('mysql:host=php.cn;dbname=php','root','root');// 结果集获取方式: 关联$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);} catch (Exception $e) {die($e->getMessage());}// 当前页码$page = $_GET['p'];// 每页显示的数据量$num = '5';// 总页码$pages = $pdo->query("SELECT CEIL(COUNT(`id`)/{$num}) AS total FROM `staff` ")->fetch()['total'];// echo $pages;// 偏移量$offset = $num * ($page - 1);// echo $offset;// 分页数据$staffs = $pdo->query("SELECT * FROM `staff` LIMIT {$num} OFFSET {$offset}")->fetchAll();// print_r($staffs);
<?php require '003.php'?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据展示</title><link rel="stylesheet" href="style.css"></head><body><table><caption>员工信息</caption><thead><tr><td>工号</td><td>状态</td><td>部门</td><td>职务</td><td>性别</td></tr></thead><tbody><?php foreach($staffs as $staff): ?><tr><td><?php echo $staff['id'] ?></td><td><?php echo $staff['state'] ?></td><td><?php echo $staff['section'] ?></td><td><?php echo $staff['duty'] ?></td><td><?php echo $staff['gender'] ?></td></tr><?php endforeach ?></tbody></table><p><?php// 1. 分页条显示5个页码$showPages = 5;// 2. 分页条的起始页码$startPage = 1;// 3. 分页条的终止页码$endPage = $pages; // 当前总页数: 14// 4. 分页条的偏移量: (当前分页条显示的页码数 - 1) / 2$offsetPage = ($showPages -1) / 2; // 2if($showPages < $pages){if($page > $offsetPage + 1){$startOmit = '...';}}// 将当前分页条页码重置if ($page > $offsetPage) {$startPage = $page - $offsetPage;$endPage = $page + $offsetPage;if ($endPage > $pages) {$endPage = $pages;}} else {$startPage = 1;$endPage = $showPages;}// 如果当前页 + 偏移量 > 总页数if ($page + $offsetPage > $pages) {// 原理, 就是向当前页前面进行借位// 此时, 新的起点 = 当前位置 - (当前页 + 偏移量 - 原始位置)$startPage = $startPage - ($page + $offsetPage - $endPage);}if ($showPages < $pages && $page + $offsetPage < $pages) $endOmit = '...';?><!-- 首页 --><a href="<?php echo $_SERVER['PHP_SELF'] . "?p=1"?>">首页</a><!-- 上一页 --><?php $pre = $page - 1;if($page == 1) $pre = 1 ?><a href="<?php echo $_SERVER['PHP_SELF'] . "?p=" . $pre ?>">上一页 </a><!-- 省略号 --><?php if(isset($startOmit)): ?><a href=""><?php echo $startOmit ?></a><?php endif ?><?php for($i= $startPage; $i<= $endPage; $i++): ?><?php $jump = sprintf('%s?p=%s', $_SERVER['PHP_SELF'], $i );$active = ($i == $page) ? 'active' :null;?><a href="<?php echo $jump ?>" class="<?php echo $active ?>"><?php echo $i ?></a><?php endfor ?><?php if (isset($endOmit)) : ?> <a href="#"><?php echo $endOmit ?></a> <?php endif ?><!-- 下一页 --><?php $pre = $page + 1;if($page == $pages) $pre = $pages ?><a href="<?php echo $_SERVER['PHP_SELF'] . "?p=" . $pre ?>">下一页 </a><!-- 尾页 --><a href="<?php echo $_SERVER['PHP_SELF'] . '?p='. $pages ?>">尾页</a></p></body></html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号