Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:不能永远躺在温柔乡中, 码农的高工资不是那么轻松拿的, 感觉到难就对了, 大家都一样都觉得难, 谁挺过来了谁就成功了,所以我不断的提示大伙,成功路上永不拥挤,因为走到最后的人极少, 希望有你...
*{
padding:0;
margin:0;
box-sizing:border-box;
color:#555;
}
body{
display:flex;
flex-direction:column;
align-items:center;
}
table{border:1px solid #CCC;width:80%;border-collapse:collapse;text-align:center;}
table caption{
font-size:1.2rem;
margin:10px;
}
table thead tr:only-of-type{background:lightblue;}
table td,table th{border:1px solid;padding:5px;}
table tr:hover{background:#DDD}
table button{
width:56px;
height:26px;
}
table button:last-of-type{color:red;}
p{display:flex;}
p a{text-decoration:none;color:#555;border:1px solid;padding:5px 10px;margin:10px 2px;}
.active{background:red;color:#FFF;border:1px solid red}
<?php
require 'user_page.php';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>用户列表</title>
</head>
<body>
<table>
<caption>用户管理</caption>
<thead>
<tr>
<th>id</th>
<th>账户</th>
<th>用户名</th>
<th>性别</th>
<th>电话</th>
<th>存款</th>
<th>操作</th>
</tr>
</thead>
<?php
foreach($users as $user)
{
?>
<tr>
<td><?php echo $user['id']; ?></td>
<td><?php echo $user['account']; ?></td>
<td><?php echo $user['username']; ?></td>
<td><?php echo $user['sex']; ?></td>
<td><?php echo $user['phone']; ?></td>
<td><?php echo $user['money']; ?></td>
<td>
<button onclick="location.href='user_handle.php?action=edit&id=<?php echo $user['id']; ?>'" >编辑</button>
<button>删除</button>
</td>
</tr>
<?php } ?>
</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($starellipsis)) {?>
<a href=""><? echo $starellipsis ?></a>
<? } ?>
<?php
for($i=$starPage;$i<=$endPage;$i++){
$jump = $_SERVER['PHP_SELF']."?p=$i";
// $jump = sprintf('%s?p=%s',$_SERVER['PHP_SELF'],$i);
$active = ($i == $page) ? 'active':null;
?>
<a href="<? echo $jump ?>" class="<?php echo $active ?>"><? echo $i ?></a>
<?php } ?>
<!-- 是否显示省略号 -->
<!-- 经过判断,是否有这个值 -->
<?php if(isset($endellipsis)) {?>
<a href=""><? echo $endellipsis ?></a>
<? } ?>
<!-- 是否显示省略号 -->
<a href="<?php echo $_SERVER['PHP_SELF']."?p=$next" ?>">下一页</a>
<a href="<?php echo $_SERVER['PHP_SELF']."?p=$pages" ?>">尾页</a>
</p>
</body>
</html>
<?php
require $_SERVER['DOCUMENT_ROOT'].'/config/connect.php';
// 获取P提交的当前页,如没有则默认给个1 ...特别注意get接受的值区分大小写
$page = $_GET['p'] ?? 1;
//每页显示数量
$num = 7;
//CEIL()向上取整,如:值=0.1则取值为1;
$sql="SELECT CEIL(count(`id`)/{$num}) AS `total` FROM `user`";
//得到总页数
$pages = $pdo->query($sql)->fetch()['total'];
//偏移量offset .
//公式:当前页码数量*(当前第几页-1);如 5*(2-1)= (第二页从索引第5个开始取数据取5个)
$offset = $num * ($page - 1);
//分页数据
$sql="SELECT * FROM `user` LIMIT {$num} OFFSET {$offset}";
$users = $pdo->query($sql)->fetchAll();
// var_dump($users);
//分页条显示7个页码
$showPages = 7;
//分页条起始页码
$starPage=1;
//终止页码
$endPage = $pages;
//分页偏移量
//公式:(当前总页码数 - 1)/2 平均两边开
$offset = ($showPages -1)/2;//3
//如果分页数量<总页数,则显示需要进入判断是否需要显示“...”。如果分页没有$showPage则不用显示
if($showPages < $pages){
//公式:当前页码 > 偏移量+ 1.则显示“...”。
//比如:偏移量=3 。那么第2页 不>偏移量。结果=不显示。
// (?p=6)>($offset=3)=需要显示
if($page > $offset + 1){
$starellipsis= '...';
}
// 重置当前页码条 (给出新的起点和终点值)
//公式:当前页码> 偏移量(如:(?p=2)>3=false )
if($page > $offset){
//为true则重置起点值
//公式:当前页 - 偏移量 。如:5-3=2 。起点就是2
$starPage= $page - $offset;
//终点
$endPage = $page + $offset;
if($endPage > $pages)
{
$endPage = $pages;
}
}else{
$starPage = 1;
$endPage = $showPages;
}
//如果:当前页+偏移量 >总页数
if($page+$offset > $pages){
//向前借位
// 公式:新起点=当前起点-(当前页码 + 偏移量 -终点位置)
$starPage = $starPage-($page+$offset - $endPage);
}
// 尾部显示...
//条件:分页条码<总页 && 当前页 + 偏移量 < 总页
if($showPage < $pages && $page + $offset < $pages)
{
$endellipsis='...';
}
}
//上下页码
$prev = $page - 1; // 0
if($page == 1){
$prev = 1; // 1
}
$next = $page + 1;
if($page == $pages){
$next = $pages;
}
<?php
<?php
require $_SERVER['DOCUMENT_ROOT'].'/config/connect.php';
$action=$_GET['action'];
$id=$_GET['id'];
switch($action){
case 'edit':
include 'edit.php';
break;
case 'doedit':
// // 1. 拼装SQL语句字符串
// $sql = 'UPDATE `user` SET ';
// $sql .='`username`=:username,`phone`=:phone,';
// $sql .='`money`=:money WHERE `id`=:id';
// // 2. 预处理
// $stmt = $pdo->prepare($sql);
// // 3. 绑定参数
// // bindParam 第一个参数是字符串 和$sql字符串上的对应上
// // bindParam 第二个参数是form提交过来的值 用于绑定第一个参数 例如: ':username' <---- $_POST['username']
// // bindParam 第三个参数是值的类型 你表中字段是什么类型,就用什么类型
// $stmt->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
// $stmt->bindParam(':phone', $_POST['phone'], PDO::PARAM_INT);
// $stmt->bindParam(':money', $_POST['money'], PDO::PARAM_INT);
// $stmt->bindParam(':id', $_POST['id'], PDO::PARAM_INT);
// // 4. 以上参数绑定之后就执行SQL
// $stmt->execute();
$sql='UPDATE `user` SET `username`=:username, `phone`=:phone,`money`=:money WHERE `id`=:id';
$stmt = $pdo->prepare($sql);
$stmt->execute($_POST);
// 5. 返回受影响的行数
if($stmt->rowCount() >= 1)
{
// 这里echo script还需要使用单引要不然也会出错
echo '<script>alert("更新成功");location.href="user_list.php";</script>';
}
break;
case 'del':
// echo $id;die;
$sql="DELETE FROM `user` where `id`=$id";
// var_dump($sql);die;
$stmt = $pdo->query($sql);
// var_dump($stmt);die;
if($stmt->rowCount() === 1 )
{
echo '<script>alert("删除成功");location.href="user_list.php";</script>';
}
break;
}