批改状态:合格
老师批语:
1.实现原理:前端通过ajax请求获取服务器数据,再由JS把数据组成html渲染到页面中
2.服务器php代码(获取分页数据信息)
<?phprequire('connection.php');//链接数据库操作//获取当前数据记录总条数$sql="select count(*) as 'nums' from v_staffs;";$stmt=$pdo->prepare($sql);$stmt->execute();$result=$stmt->fetch();// var_dump($result);$nums=$result['nums'];$num=10;//每页显示记录数$pages=ceil($nums/$num);//获取总页数// echo $pages;// 获取当前分页的数据记录信息$sql='select * from v_staffs limit ?,?;';// echo $_GET['p'];$page=$_GET['p']??1;//页码数$start=($page-1)*$num;//通过页码数获取起始记录数$stmt=$pdo->prepare($sql);$stmt->bindParam(1,$start,PDO::PARAM_INT);$stmt->bindParam(2,$num,PDO::PARAM_INT);$stmt->execute();// echo print_r($stmt->fetchAll(),true);$rows=$stmt->fetchAll();$res=['data'=>$rows,'pages'=>$pages];echo json_encode($res);// return json_encode($rows);
2.前端js获取数据请求和页面渲染
<!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>员工信息表(无刷新分页)</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script></head><body><main><table border="1" cellpadding='3' cellspacing='0'><caption>员工信息表</caption><tr id="title"><th>编号</th><th>姓名</th><th>年龄</th><th>性别</th><th>工资</th><th>邮箱</th><th>职位</th><th>负责区域</th><th>操作</th></tr></table><!--页码部分 --><div id='page'></div></main></body><script>//页面主体内容获取和生成函数function getrows(data) {//如果页面已经记录信息需要移除if ($($("table>tbody")[0]).children().length > 1) {$($("table>tbody")[0]).children().remove("tr:not(#title)");};//生成html内容var content = "";data.forEach((item) => {content += `<tr><td>${item["id"]}</td><td>${item["name"]}</td><td>${item["age"]}</td><td>${item["gender"]}</td><td>${item["salary"]}</td><td>${item["email"]}</td><td>${item["postion"]}</td><td>${item["area"]}</td><td><button><a href="http://php.edu/test/edit.php?id=${item["id"]}" target="_blank">编辑</a></button><button class="delete" data-index="${item["id"]}">删除</button></td></tr>`;});//渲染到页面中取$('#title').after(content);}//生成分条条函数function getpage(pages) {//如果没有分页条则生成if ($("#page").children().length == 0) {var plink = "<span>首页</span><span><</span>";for (var i = 1; i <= pages; i++) {plink += `<span>${i}</span>`;}plink += "<span>></span><span>尾页</span>"// console.log(plink);$("#page").append(plink);}// console.log($("#page").children().length);}//ajax获取数据信息函数function getdata(page) {$.ajax({type: 'GET',url: 'http://php.edu/test/staffs_api.php',data: {p: page},dataType: 'json',success: function(res) {// console.log(res);var data = res['data'];var pages = res['pages'];// console.log(data, pages);//调用函数生成页面信息getrows(data);getpage(pages);}});}//首次打开页面默认获取首页数据信息并展示window.onload = function() {getdata(1);}//通过委托事件实现翻页(上一页下一页功能没有实现)$('#page').click(function(ev) {// console.log(ev.target.textContent, ev.currentTarget);var currentpage = ev.target.textContent;switch (currentpage) {case "首页":getdata(1);break;case "尾页":var count = $(ev.currentTarget).children().length - 4;getdata(count);break;case "<":console.log('上一页');break;case ">":console.log("下一页");break;default:getdata(currentpage);}});//删除数据功能,通过ajaxComplete()函数来获取动态生成的信息$(document).ajaxComplete(function() {// console.log($('.delete'));$('.delete').click(function(ev) {var id = $(ev.target).data("index");// console.log(id);if (window.confirm("确定删除吗?")) {$.ajax({type: 'GET',url: 'http://php.edu/test/delete.php',data: {id: id},dataType: 'json',success: function(res) {if (res[0] > 0) {return alert("删除成功");} else {return alert("删除失败");}}});window.location.reload();} else {return false;}});});</script><style>main {width: 1000px;margin: 10px auto;}table {width: 1000px;}#page {margin-top: 10px;width: 1000px;display: flex;justify-content: space-around;}#page>span {width: 46px;height: 20px;background-color: lightgray;/* border: 1px solid black; */text-align: center;color: whitesmoke;line-height: 20px;}#page>span:hover {cursor: pointer;background-color: white;color: red;}th,td {text-align: center;}</style></html>
(一)功能实现原理
1.通过分页的编辑按钮获取要编辑数据记录的id,然后通过编辑页面把要编辑的记录显示出来,
2.通过ajax获取新的数据,通过id,更新信息
(二)实现代码
1.前端代码
<?phpinclude('connection.php');$sql="select * from v_staffs where id=:id;";$stmt=$pdo->prepare($sql);$id=$_GET["id"];$stmt->bindParam(':id',$id,PDO::PARAM_INT);$stmt->execute();// $stmt->debugDumpParams();$row=$stmt->fetch();// var_dump($row);// exit();?><!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"><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script><title>员工信息修改</title></head><body><body><table border="1" cellpadding='3' cellspacing='0'><caption>修改员工信息</caption><tr><th>编号</th><th>姓名</th><th>年龄</th><th>性别</th><th>工资</th><th>邮箱</th></tr><tr><td id="id"><?= $row["id"] ?></td><td><input type="text" name="name" value="<?= $row["name"] ?>"></td><td><input type="text" name="age" value="<?= $row["age"] ?>"></td><td><input type="text" name="gender" value="<?= $row["gender"] ?>"></td><td><input type="text" name="salary" value="<?= $row["salary"] ?>"></td><td><input type="text" name="email" value="<?= $row["email"] ?>"></td></tr></table><button id="update">提交</button></body><script>$("#update").click(function(){$.ajax({type: 'POST',url: 'http://php.edu/test/update.php',data: {//获取新数据name: $("[name='name']").val(),age:$("[name='age']").val(),gender:$("[name='gender']").val(),salary:$("[name='salary']").val(),email:$("[name='email']").val(),id:$("#id").text()},dataType: 'json',success: function(res) {//确认更新成功alert(res[1]);window.close();//关闭窗口}});});</script></html>
2.后端代码
<?phpinclude('connection.php');$sql="update staffs set name=?,age=?,gender=?,salary=?,email=? where id=?;";$stmt=$pdo->prepare($sql);$stmt->execute([$_POST['name'],$_POST["age"],$_POST["gender"],$_POST["salary"],$_POST["email"],$_POST['id']]);// $stmt->debugDumpParams();if($stmt->rowCount()>0){echo json_encode([$stmt->rowCount(),"更新成功"]);}else{echo json_encode([0,"更新失败"]);}

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号