批改状态:合格
老师批语:学习总是从模仿开始的, 我也一样, 所以一开始 照着写是最快的, 我们学编程那会, 没你们条件好, 所以相信你一定能学成
通过PDO连接,读取数据库中的数据,通过php输出,那其中的分页数据怎么做呢?下面我们通过一个实例来演示
// 根据自己数据库的信息,创建dsn连接字符串,由三部分组成,连接信息,账号,密码$dsn = 'mysql:host=localhost;dbname=message;charset=utf8;port=3306';$username = 'root';$password = '123456';// 创建一个异常,出现异常抛出消息try{$pdo = new PDO($dsn,$username,$password);// 获取结果获取方式:关联$pdo -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);}catch(Exception $e) {die($e->getMessage());}
require 'connect.php';// 1.当前的页数$page = $_GET['p']??1;// 2.每页显示的记录数量$num = 5;// 3.总页数$sql = "SELECT CEIL(COUNT(`id`)/{$num}) AS `total` FROM `staffs`";$pages = $pdo -> query($sql) -> fetch()['total'];// 4.偏移量$offset = $num * ($page - 1);// 5.分页数据$sql = "SELECT * FROM `staffs` LIMIT {$num} OFFSET {$offset}";$staffs = $pdo->query($sql)->fetchAll();
<body><table><caption>员工管理系统</caption><thead><tr><th>ID</th><th>名字</th><th>年龄</th><th>班级</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 $staff['age'] ?></td><td><?php echo $staff['class'] ?></td><td><?php echo $staff['phone'] ?></td><td><?php echo $staff['address'] ?></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><?php// 1. 分页条显示5个页码$showPages = 5;// 2. 分页条的起始页码$startPage = 1;// 3. 分页条的终止页码$endPage = $pages; // 当前总页数: 14// 4. 分页条的偏移量: (当前分页条显示的页码数 - 1) / 2$offsetPage = ($showPages - 1) / 2; // 2// 只有当前分页条数量 < 总页数, 才有必要显示出省略标记if ($showPages < $pages) {// 如果当前页 > 偏移量 + 1 , 应该显示...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 = '...';}?><?php if (isset($startOmit)) : ?> <a href="#"><?php echo $startOmit ?></a><?php endif ?><!-- 前一页 --><?php $prev = $page - 1;if ($page == 1) $prev = 1;?><a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $prev ?>">前一页</a><?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$next = $page + 1;if ($page == $pages) $next = $pages;?><a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $next ?>">下一页</a><?php if (isset($endOmit)) : ?> <a href="#"><?php echo $endOmit ?></a><?php endif ?><!-- 尾页 --><a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $pages ?>">尾页</a><!-- 跳转页 --><p><input type="summit" name="summit" id="submit"><button onclick="location.href='handle.php?action=jump ?>'">跳转</button></p><script>function del(id) {return confirm('是否删除?') ? alert('删除成功') : false;}</script></p></body>
require 'demo1.php';$action = $_GET['action'];$id = $_GET['id'];$jump = $_GET['submit'];switch($action){// 编辑需要进行两步// 1.渲染编辑表单case 'edit':include 'edit.php';break;case 'doedit':$sql = 'UPDATE `staffs` SET `name`=:name,`age`=:age,`class`=:class,`phone`=:phone,`address`=:address WHERE `id`=:id';// $sql = 'UPDATE `staffs` SET `name`=:name, `age`=:age,`sex`=:sex,`position`=:position ,`mobile`=:mobile,`hiredate`=:hiredate WHERE `id`=:id';// print_r($_POST);// $_POST['id'] = $id;$stmt = $pdo->prepare($sql);$stmt -> execute($_POST);if($stmt->rowCount() == 1 )echo '<script>alert("更新成功");location.href="demo3.php";</script>';}
// 获取信息$staff = $pdo->query("SELECT * FROM `staffs` WHERE `id`={$id}")->fetch();?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>编辑员工信息</title></head><body><form action="<?php echo $_SERVER['PHP_SELF'].'?action=doedit&id='.$id ?>" method="post"><p><label for="name">名字</label><input type="text" id="name" name="name" value="<?php echo $staff['name']?>"></p><p><label for="age">年龄</label><input type="text" id="age" name="age" value="<?php echo $staff['age']?>"></p><p><label for="class">班级</label><input type="text" id="class" name="class" value="<?php echo $staff['class']?>"></p><p><label for="phone">电话</label><input type="text" id="phone" name="phone" value="<?php echo $staff['phone']?>"></p><p><label for="address">地址</label><input type="text" id="address" name="address" value="<?php echo $staff['address']?>"></p><button>提交</button></body>

编辑页面
整个分页项目可以说是理解了,偏移量的设置,省略的处理,修改脚本的处理,但仅仅停留在理解层面,实际敲的代码,大多数跟着老师敲的,这个还需要多敲,才能记住,光理解没有用,学而不思则罔,思而不学则怠,还需要更多更多更多的敲代码,反复的敲,不能一直半吊子模样,今天敲会一点,明天敲会一点。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号