博主信息
小明的博客
博文
42
粉丝
2
评论
0
访问量
27344
积分:0
P豆:92
博文分类
作业42篇

完善员工管理系统实现添加删除修改功能(实现员工的增删改 作业软删除)2019年2月27日22时

2019年05月04日 20:18:06阅读数:1905博客 / 小明的博客/ 作业

今天,课上学习了员工管理系统的添加 删除 修改,作业时作出软删除。废话不多说上代码,谈逻辑。

一、实现添加功能

在staff_list上的添加按钮设置导航到,staff_add.php,然后新建staff_add.php,然后构建前端页面,在新增按钮设置add方法传入this.form,重点在js的add方法,add方法中要做ajax数据提交将form下的name age position sex mobile的值传递到staff_manage.php,这里需要注意的是,提交按钮里面需要连接到staff_manage,将action=add通过get方法传过来;然后在staff_manage连接数据库,将cation复制给$action,switch判断,当action为add时,那么就执行添加数据到数据库的操作,然后判断,当数据库添加操作被执行时——》(然后再进行判断,影响行数为1时,status为1,message为添加数据成功;影响行数为0时,status为0,message为没有添加数据);数据库没有执行操作时——》(status为-1,message为操作错误),判断完成后,把status和message专程json格式传回前端staff_add,staff_add页面在ajax返回响应数据阶段,判断如果status时1添加正确css样式,否则为错误样式,然后把message赋给tips的内容,再添加定时器要2秒钟后返回index,至此添加功能完成。

实例

<?php session_start(); ?>
<?php if (!isset($_SESSION['username'])): ?>
    <style>h2,p{text-align: center;margin-top: 50px;}</style>
    <h2>您还没有登录呢~~</h2>
    <p>正在跳转到登录页面...</p>
    <script>
        setTimeout("location.assign('login.php')", 2000);
    </script>
<?php else:?>
<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>添加员工</title>
    <style>
        h3 {
            text-align: center;
        }

        div {
            width: 300px;
            height: 260px;
            /*background-color: lightblue;*/
            margin: 0 auto;
            text-align: center;
            padding: 20px;
            border: 1px dashed #888;
            border-radius: 5%;
        }

        div input {
            background-color: transparent;
            border: none;
            border-bottom: 1px solid #333;
        }

        button:hover {
            cursor: pointer;
            background-color: lightblue;
        }

        .success {
            color: green;
        }
        .error {
            color: red;
        }

    </style>
</head>
<body>
<h3>添加员工</h3>
<div>
    <form name="user">

        <p>
            <label for="name">姓名:</label>
            <input type="text" name="name" id="name" value="">
        </p>
        <p>
            <label for="age">年龄:</label>
            <input type="number" name="age" id="age" value="">
        </p>
        <p>
            <label for="position">职位:</label>
            <input type="text" name="position" id="position" value="">
        </p>
        <p>
            <label for="mobile">手机:</label>
            <input type="text" name="mobile" id="mobile" value="">
        </p>
        <p style="margin-left: -55px;">性别:
            <input type="radio" id="male" name="sex" value="1" checked><label for="male">男</label>
            <input type="radio" id="female" name="sex" value="0"><label for="female">女</label>
        </p>
        <p>
            <button type="button" onclick="add(this.form)">新增</button>
            <button type="button" onclick="history.back()">取消</button>
        </p>
    <!--    提示占位符-->
        <p></p>
    </form>
</div>

<script>
    function add(form) {

        // ajax方式交互数据
        var request = new XMLHttpRequest();
        //    请求完成获得相应数据
        request.onreadystatechange = function () {
            if (request.readyState === 4 && request.status === 200) {
                // 将返回的json字符串解析成对象
                var data = JSON.parse(request.responseText);
            //    获取tips元素
                var tips = form.lastElementChild;
                tips.innerText = data.message;
            //    判断返回来的status值  1 成功  反之错误
                if (data.status === 1) {
                    tips.classList.add('success');
                } else {
                    tips.classList.add('error');
                }
                // 两秒后  返回上一层也就是staff_list
                setTimeout(function(){
                    history.back();
                    top.location.reload();
                },2000);
            }
        };
        //配置请求信息
        request.open('POST', 'staff_manage.php?action=add');
        // ajax请求头
        request.setRequestHeader('content-type','application/x-www-form-urlencoded');
        // 发送的数据集合成json数据
        var data = {
            name:form.name.value,
            age:form.age.value,
            position:form.position.value,
            mobile:form.mobile.value,
            sex:form.sex.value
        };
        var staff = 'name=' + data.name +
                '&age=' + data.age +
                '&position=' + data.position +
                '&sex=' + data.sex +
                '&mobile=' + data.mobile;

        // 发送请求数据
        request.send(staff);
    }


</script>
</body>
</html>
<?php endif?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


二、更新操作

更新操作总体思路和添加一样,也是通过get传给staff_manage一个action=save值 ,通过判断save后然后在执行更新操作,根据执行结果返回响应的status值和message值给前台,前台在进行相应的样式添加。这里的细节主要有,在staff_list的编辑按钮通过隐藏域,把数据库中的id用get方式传递到新建页面staff_edit页面,这也页面的样式同添加页面一直,只不过表单的值时通过id然后数据库查询添加上去的,这里的修改提交按钮还是通过ajax异步post传给staff_manage,然后在进行数据库操作。

实例

<?php
//echo $_GET['id'];
//连接数据库
$pdo = new PDO('mysql:dbname=php', 'root', 'root');
//获取准备对象
$stmt = $pdo->prepare("SELECT * FROM `staff` WHERE `id`=:id");
//$stmt->debugDumpParams();
//执行操作
$stmt->execute(['id'=>$_GET['id']]);
//获取记录
$staff = $stmt->fetch(PDO::FETCH_ASSOC);
//print_r($staff);
?>
<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>编辑员工</title>
    <style>
        h3 {
            text-align: center;
        }

        div {
            width: 300px;
            height: 260px;
            /*background-color: lightblue;*/
            margin: 0 auto;
            text-align: center;
            padding: 20px;
            border: 1px dashed #888;
            border-radius: 5%;
        }

        div input {
            background-color: transparent;
            border: none;
            border-bottom: 1px solid #333;
            color: #777;
            text-align: center;
            font-size: inherit;
        }

        button:hover {
            cursor: pointer;
            background-color: lightblue;
        }

        .success {
            color: green;
        }
        .error {
            color: red;
        }

    </style>
</head>
<body>
<h3>编辑员工</h3>
<div>
    <form name="user">
        <p>
            <label for="name">姓名:</label>
            <input type="text" name="name" id="name" value="<?=$staff['name']?>">
        </p>
        <p>
            <label for="age">年龄:</label>
            <input type="number" name="age" id="age" value="<?=$staff['age']?>">
        </p>
        <p>
            <label for="position">职位:</label>
            <input type="text" name="position" id="position" value="<?=$staff['position']?>">
        </p>
        <p>
            <label for="mobile">手机:</label>
            <input type="text" name="mobile" id="mobile" value="<?=$staff['mobile']?>">
        </p>
        <p style="margin-left: -55px;">性别:
            <input type="radio" id="male" name="sex" value="1"><label for="male">男</label>
            <input type="radio" id="female" name="sex" value="0"><label for="female">女</label>
        </p>
        <script>
            var male = document.getElementById('male');
            var female = document.getElementById('female');
            // 将male female的值变成整数 然后判断是否checked
            if (parseInt(male.value) === <?= $staff['sex']?>) {
                male.checked = true;
            }
            if (parseInt(female.value) === <?= $staff['sex']?>) {
                female.checked = true;
            }
        </script>
        <p><input type="hidden" name="id" value="<?= $staff['id']?>"></p>
        <p>
            <button type="button" onclick="save(this.form)">修改</button>
            <button type="button" onclick="history.back()">取消</button>
        </p>
        <!--    提示占位符-->
        <p></p>
    </form>
</div>
</body>
<script>
    function save(form) {
        // 用ajax方式将数据异步提交
        var request = new XMLHttpRequest();
        // 请求完成获得响应数据
        request.onreadystatechange = function () {
            if (request.readyState === 4 && request.status === 200) {
                var data = JSON.parse(request.responseText);
                var tips = form.lastElementChild;
                tips.innerText = data.message;
                if (data.status === 1) {
                    tips.classList.add('success');
                } else {
                    tips.classList.add('error');
                }
                setTimeout(function () {
                    history.back();
                    top.location.reload();
                }, 2000);
            }
        };
    //    配置请求信息
        request.open('POST', "staff_manage.php?action=save");
        // post方式请求头
        request.setRequestHeader('content-type','application/x-www-form-urlencoded');
        // 设置数据
        var data = {
            name:form.name.value,
            age:form.age.value,
            position:form.position.value,
            sex:form.sex.value,
            mobile:form.mobile.value,
            id:form.id.value
        };
        var staff = 'name=' + data.name +
                    '&age=' + data.age +
                    '&position=' + data.position +
                    '&sex=' + data.sex +
                    '&mobile=' + data.mobile +
                    '&id=' + data.id;
        // 发送请求数据
        request.send(staff);
    }
</script>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、删除操作

在staff_list里的按钮设置超链接 confirm(‘是否删除’)?location.assign('staff_manage.php?action=del&id=<?=$staff['id']?>') : false"   然后在staff_manage  del方法,如果执行成功就弹窗删除成功。

实例

<?php
//连接数据库
$pdo = new PDO('mysql:dbname=php','root','root');
//获取action的get传值
$action = strtolower(trim($_GET['action']));
//根据action值判断应该采用的处理方法
switch ($action) {
//    新增方法
    case 'add':
//        新增sql语句
        $sql = 'INSERT INTO `staff`
                (`name`, `age`, `sex`, `position`, `mobile`, `hiredate`) VALUES 
                (:name, :age, :sex, :position, :mobile, :hiredate);';
//        准备对象
        $stmt = $pdo->prepare($sql);
//        将post传过来的值赋给相应的变量
        $name = trim($_POST['name']);
        $age = trim($_POST['age']);
        $sex = trim($_POST['sex']);
        $position = trim($_POST['position']);
        $mobile = trim($_POST['mobile']);
        $hiredate = time();
//        数据绑定
        $stmt->bindValue('name', $name, PDO::PARAM_STR);
        $stmt->bindValue('age', $age, PDO::PARAM_INT);
        $stmt->bindValue('sex', $sex, PDO::PARAM_INT);
        $stmt->bindValue('position', $position, PDO::PARAM_STR);
        $stmt->bindValue('mobile', $mobile, PDO::PARAM_STR);
        $stmt->bindValue('hiredate', $hiredate, PDO::PARAM_INT);
//        如果执行成功,切影响行数等于1那么就是新增成功了
       if($stmt->execute()){

            if ($stmt->rowCount() == 1) {
                $status = 1;
                $message = '新增成功';
            } elseif ($stmt->rowCount() == 0) {
                $status = 0;
                $message = '没有新增';
            }
        } else {
           $status = -1;
           $message = '发生错误';
        }
//        输出json格式的status message值
        echo json_encode(['status'=>$status, 'message'=>$message]);
        break;
    case 'save':

        $sql = "UPDATE `staff` 
                SET `name`=:name, `age`=:age, `position`=:position, `sex`=:sex, `mobile`=:mobile
                WHERE `id`=:id";
        $stmt = $pdo->prepare($sql);
        $name = trim($_POST['name']);
        $age = trim($_POST['age']);
        $position = trim($_POST['position']);
        $sex = trim($_POST['sex']);
        $mobile = trim($_POST['mobile']);
        $id = trim($_POST['id']);
        $stmt->bindValue('name', $name, PDO::PARAM_STR);
        $stmt->bindValue('age', $age, PDO::PARAM_INT);
        $stmt->bindValue('position', $position, PDO::PARAM_STR);
        $stmt->bindValue('sex', $sex, PDO::PARAM_INT);
        $stmt->bindValue('mobile', $mobile, PDO::PARAM_STR);
        $stmt->bindValue('id', $id, PDO::PARAM_INT);


        if ($stmt->execute()) {

            if ($stmt->rowCount() == 1) {
                $status = 1;
                $message = '更新成功';
            } else if ($stmt->rowCount() == 0) {
                $status = 0;
                $message = '没有更新数据';
            }
        } else {

            $status = -1;
            $message = '更新发送错误';
        }
        echo json_encode(['status'=>$status, 'message'=>$message]);
        break;
    case 'del':
        /*
         * 这是正常删除
         * $sql = 'DELETE FROM `staff` WHERE `id`=:id';
        $stmt = $pdo->prepare($sql);
        if ($stmt->execute(['id'=>$_GET['id']])) {
            echo "<script>alert('删除成功');location.assign('index.php')</script>";
        }*/

        /*软删除*/
        $sql = "UPDATE `staff` SET `is_show`=0 WHERE `id`=:id";
        $stmt = $pdo->prepare($sql);
        if ($stmt->execute(['id'=>$_GET['id']])) {
            echo "<script>alert('删除成功');location.assign('index.php')</script>";
        }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

四、作业:软删除

通过在数据库添加is_show字段,默认值为1显示,0为不显示,然后在staff_manage中的del中设置为id对应的数据的is_show值为0,在staff_list设置is_show的为1的才显示 就成了

五、总结

添加删除修改 这三个操作相同的都是通过前端相应的数据传输到后段 然后后段判断  进行相应的操做,不同的是添加和修改都需要页面展示。

我需要注意的还是对js的操作,主要对ajax的操作,对超链接的定向location  还有便捷的找到相应的元素不熟悉



批改状态:未批改

老师批语:

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论