批改状态:合格
老师批语:以后放个效果图
<?php$dsn = 'mysql:host=localhost;dbname=phpedu;charset=utf8;port=3306';$username = 'root';$password = 'root';try {$pdo = new PDO($dsn, $username, $password);// 结果集获取方式: 关联$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);} catch (Exception $e) {die($e->getMessage());}
<?phprequire 'createPage.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><th>ID</th><th>姓名</th><th>入职时间</th><th>操作</th></tr></thead><tbody><?php foreach ($staffs as $staff) : ?><tr><td><?php echo $staff['id'] ?></td><td><?php echo $staff['name'] ?></td><td><?php echo date('Y-m-d', $staff['hiredate']) ?></td><td><button onclick="location.href='handle.php?action=edit&id=<?php echo $staff['id'] ?>'">编辑</button><button onclick="del(<?php echo $staff['id'] ?>)">删除</button></td></tr><?php endforeach; ?></tbody></table><!-- 添加跳转到首页, 前一页, 下一页, 尾页的功能 --><p><!-- 首页--><a href="<?php echo $_SERVER['PHP_SELF'].'?p=1'?>">首页</a><!-- 前一页--><a href="<?php echo $_SERVER['PHP_SELF'] .'?p='.$prev?>">前一页</a><!-- 前面省略 --><?php if (isset($startOmit)) : ?> <a href="<?php echo $_SERVER['PHP_SELF'].'?p=1'?>">1</a><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' : '';?><a href="<?= $jump?>" class="<?php echo $active ?>"><?=$i?></a><?php endfor ?><!-- 后面省略 --><?php if (isset($endOmit)) : ?> <a href="#"><?php echo $endOmit ?></a> <a href="<?php echo $_SERVER['PHP_SELF'].'?p='.$total?>"><?=$total?></a><?php endif ?><!-- 下一页--><a href="<?php echo $_SERVER['PHP_SELF'] .'?p='.$next?>">下一页</a><!-- 尾页--><a href="<?php echo $_SERVER['PHP_SELF'].'?p=' .$total?>">尾页</a><!-- 页面跳转 --><form method="get" action="table.php"><input type="number" value="" name="p"><button>跳转</button></form></p><script>function del(id) {return confirm('是否删除?') ? alert('删除成功') : false;}</script></body></html>
<?php//连接数据库require 'connect.php';//1.当前的页数/页码$page = $_GET['p'] ?? 1;if($_GET['p'] == 0){$page = 1;}//2.每页显示的记录数量$pageSize = 5;//3.总页数$sql = "SELECT CEIL(COUNT(`id`)/$pageSize) AS `total` FROM `user`";$total = $pdo->query($sql)->fetch()['total'];//4.偏移量$offset = $pageSize*($page-1);//var_dump($pageSize);//5.分页数据$sql = "SELECT * FROM `user` LIMIT {$pageSize} OFFSET {$offset}";$staffs = $pdo->query($sql)->fetchAll();/*** 前一页* 如果当前页码是第一页,页码锁定到第一页*/$prev = $page - 1;if($page == 1){$prev = 1;}/*** 下一页* 如果下一页的页码大于总页数,页码锁定到总页数*/$next = $page + 1;//if ($page == $total) $next = $total;if($next > $total){$next = $total;}/*** 1.分页条显示5个页码*/$showPages = 5;/*** 2.分页条起始页码*/$startPage = 1;/*** 3.分页条结束页码 ,等于总页数*/$endPage = $total;/*** 4.分页条的偏移量: (当前分页条显示的页码数 - 1) / 2*/$offsetPage = ($showPages - 1)/2;/*** 只有当前分页条数量 < 总页数, 才有必要显示出省略标记*/if($showPages < $total){// 如果当前页 > 偏移量 + 1 , 应该显示前面...if($page > $offsetPage + 1){$startOmit = '...';}// 如果当前页 + 偏移量 <总页数 , 应该显示后面...if($showPages < $total && $page + $offsetPage < $total){$endOmit = '...';}// 将当前分页条页码重置if($page > $offsetPage){//如果当前分页大于分页偏移量,开始页等于当前页-分页偏移量,$startPage = $page - $offsetPage;//结束页等于当前页+分页偏移量,$endPage = $page + $offsetPage;//如果结束页大于总页数,锁定结束页if($endPage > $total) $endPage=$total;}else{$startPage = 1;$endPage = $showPages;}// 如果当前页 + 偏移量 > 总页数if ($page + $offsetPage > $total) {// 原理, 就是向当前页前面进行借位// 此时, 新的起点 = 当前位置 - (当前页 + 偏移量 - 原始位置)$startPage = $startPage - ($total + $offsetPage - $endPage);}}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号