博客列表 >使用PDO搭建一个员工管理系统-2019年2月25日

使用PDO搭建一个员工管理系统-2019年2月25日

的博客
的博客原创
2019年03月13日 17:23:05768浏览

员工资料编辑页面

user_edit.php

<?php
$id = intval(trim($_GET['id']));
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

$stmt = $pdo->prepare("SELECT * FROM `user` WHERE `id`={$id}");
//echo $stmt->debugDumpParams().'<br>';
$stmt->execute();
//die();
//var_dump($flag);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
//echo '<pre>';
//print_r($user);

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户编辑</title>
    <style>
        h3 {
            text-align: center;
        }

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

        div input {
            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>用户名:
                <input type="text" name="name" value="<?=$user['name']?>" disabled>
            </label>
        </p>

        <p>
            <label>邮&nbsp;&nbsp;&nbsp;箱:
                <input type="email"  id="email" name="email" value="<?=$user['email']?>" autofocus>
            </label>
        </p>

        <p>
            <label>密&nbsp;&nbsp;&nbsp;码:
                <input type="password" id="password" name="password" value="<?=$user['password']?>">
            </label>
        </p>
        <!--            将当前用户的id,做为更新条件,以隐藏域的方式发送到服务器端-->
 <input type="hidden" id="id" value="<?=$user['id']?>">
        <p>
            <button type="button" onclick="save(this.form)">保存</button>
            <button type="button" onclick="history.back()">取消</button>
        </p>

        <!-- 提示信息占位符-->
 <p></p>
    </form>
</div>

<script>
    function save(form) {
        var request = new XMLHttpRequest();

        request.onreadystatechange = function () {
            // console.log(request.responseText);
 if (request.readyState === 4 && request.status === 200) {
                var data = JSON.parse(request.responseText);
                // console.log(data);

                // 获取提示信息占位元素
 var tips = form.lastElementChild;
                tips.innerText = data.message;

                // 根据返回的状态,添加适当的class样式
 if (data.status === 1) {
                    tips.classList.add('success');
                }
                // 没有更新或更新错误采用同一个样式
 else {
                    tips.classList.add('error');
                }
                // 2秒后跳转到上一个页面,即用户列表页
 setTimeout(function () {
                    history.back();
                }, 2000);
            }
        };

        request.open('post','user_manage.php?action=save');

        request.setRequestHeader('content-type','application/x-www-form-urlencoded');

        request.send('email='+form.email.value+'&password='+form.password.value+'&id='+form.id.value);

    }
</script>
</body>
</html>

user_manage.php

<?php
// 屏蔽php的通知级别的错误
//error_reporting(E_ALL ^ E_NOTICE);
// 屏蔽php的警告级别的错误
//error_reporting(E_ALL ^ E_WARNING);
//print_r();
$action = trim($_GET['action']);
$id = trim($_POST['id']);
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
switch ($action){
    case 'save':

        $email = strtolower(trim($_POST['email']));
        $password = strtolower(trim($_POST['password']));
        $stmt = $pdo->prepare("UPDATE `user` SET `email`='{$email}', `password`='{$password}' WHERE `id`={$id}");
//        echo $stmt->debugDumpParams();
//        $sql = 'UPDATE `user` SET `email`=:email, `password`=:password WHERE `id`=:id';
//        $stmt = $pdo->prepare($sql);
//
//        $email = strtolower(trim($_POST['email']));
//        $password = sha1(strtolower(trim($_POST['password'])));
//        $id =strtolower(trim($_POST['id']));
//        $stmt->bindParam('email',$email, PDO::PARAM_STR,60);
//        $stmt->bindParam('password',$password, PDO::PARAM_STR,20);
//        $stmt->bindParam('id',$id, PDO::PARAM_INT);

        if ($stmt->execute()){
            if ($stmt->rowCount() == 1) {
                $status = 1;
                $message = '更新成功';
            } else if ($stmt->rowCount() == 0) {
                $status = 0;
                $message = '信息没有更新';
            }
        }else {
//             项目如何上线商用, 直接提示出错即可, 不要输出具体出错信息
//            die(print_r($stmt->errorInfo()));
            print_r($stmt->errorInfo());
            $status = -1;
            $message = '保存失败,请检查';
        }

        echo json_encode(['status'=>$status, 'message'=>$message]);
        break;
    case 'del':
        $stmt = $pdo->prepare("DELETE FROM `user` WHERE `id`={$id}");
        if ($stmt->execute()){
            if ($stmt->rowCount() == 1){
                $status = 1;
                $message = '删除成功';
            }elseif ($stmt->rowCount() == 0){
                $status = 0;
                $message = '信息没有更新';
            }
        }else{
            $status = -1;
            $message = '出现未知错误,请联系管理员';
        }

        echo json_encode(['status'=>$status,'message'=>$message]);
        break;
}

使用ajax的好处是能够实现异步处理,不用太多页面跳转,直接后台异步返回数据到前台,提高用户体验

  1. 在URL传值的参数是GET方式,php脚本可以使用$_GET来获取传递过来的参数

  2. POST传值的参数在php脚本中使用$_POST来获取参数

  3. php脚本中json_encode()方法可以将一个序列数组转为JSON对象并返回,便于前端数据获取和操作

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议