【php增删改查实例】第十一节 - 部门管理模块(编辑功能)

9. 编辑部门功能的实现

思路:只允许用户勾选一条数据,点击编辑按钮,会跳出一个和新增数据类似的对话框。然后,用户可以修改部门名称和部门编码。点击保存按钮,提示修改成功。

9.1 前台代码编写

<a href="javascript:openModifyDialog()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">编辑部门</a>

现在点击编辑部门按钮是没有用的,因为openModifyDialog方法还未编写,所以,当务之急就去script标签块中添加这个方法。

function openModifyDialog(){

    //1. 获取用户选中的所有行
    var rows = $("#grid0").datagrid("getSelections"); 

    if(rows.length != 1){

        $.messager.alert("系统提醒","请勾选一条数据!");
        return;
    }

    //2. 打开一个编辑窗口,把勾选的信息填充进去
    $("#dialog0").dialog("open");
    $("#dialog0").dialog("setTitle","部门修改");

    $("#form0").form("load",rows[0]);


}

因为修改数据的时候,还需要传给后台一个ID,所以这个ID我们设置为一个隐藏的input框:

为了保证先打开修改窗口后,再打开新增窗口,ID残留的问题,我们需要在打开新增页面的时候,就去把ID清空掉。

function openDialog(){
    $("#dialog0").dialog("open");

    //如果有ID,就清除
    $("#id").val("");

}

9.2 后台代码编写

10. 新增部门的时候,不允许部门编号重复

思路:deptid 传到后台的时候,先判断这个deptid在数据库中是否存在?如果存在,就提示“该部门编号重复!” 前台页面。如果不重复,继续之前的保存逻辑。

判断是否重复的方法: SELECT count(1) as total from tm_dept where deptid = 'BM_001'

首先,在saveDept.php文件中,把ResultData对象的定义放到最上面:

然后,在新增的逻辑中,添加如下代码,完成部门编号的非重复检测。

11. 修改部门的时候,不允许部门编号重复

这里会出现一种比较麻烦的情况。 部门编号是不允许重复的,如果我现在修改一个部门信息:

假如部门编号不改,我就把科技部改成科技2部。就会遇到一个问题。 1.如果后台进行部门编号的非重复检测,那么BM_001的确在数据库中是存在的,就是这条未修改前的数据。因此,无法进行保存。 2.如果后台不进行部门编号的非重复检测,那么,如果有人把BM_001改成其他已经存在的部门编号,比如BM_002,那么,数据库就会存在两条相同的数据了。

代码:

//根据ID是否传过来判断是新增还是修改?
    if(isset($_POST['id']) && $_POST['id'] != null){
        $id = $_POST['id'];


        //先要判断本次修改的部门编号是否和修改前一致?

        $rs = mysql_query("SELECT deptid from tm_dept where id = $id");

        while($row = mysql_fetch_array($rs)){
            
            if($row["deptid"] == $deptid){
                $sql = "update tm_dept set deptname = '$deptname' , deptid = '$deptid' where id = $id";
            }else{
                //判断部门编号deptid是否重复?
                $rs = mysql_query("SELECT count(1) as total from tm_dept where deptid = '$deptid'");

                while($row = mysql_fetch_array($rs)){
                    if($row["total"] > 0){
                        $resultData['errCode'] = -2; 
                        $resultData['errMsg'] = "部门编号".$deptid."重复,能不能换一个啊?"; 
                        echo json_encode($resultData);
                        return;
                    }
                }
            }

        }


        

    }else{


        //判断部门编号deptid是否重复?
        $rs = mysql_query("SELECT count(1) as total from tm_dept where deptid = '$deptid'");


        while($row = mysql_fetch_array($rs)){
            if($row["total"] > 0){
                $resultData['errCode'] = -2; 
                $resultData['errMsg'] = "部门编号".$deptid."重复,能不能换一个啊?"; 
                echo json_encode($resultData);
                return;
            }
        }



        $sql = "INSERT INTO tm_dept (id, deptid, deptname, createtime, updatetime) VALUES (NULL, '$deptid', '$deptname', now(), now());";
        
    }
  1. 编辑部门功能的实现 思路:只允许用户勾选一条数据,点击编辑按钮,会跳出一个和新增数据类似的对话框。然后,用户可以修改部门名称和部门编码。点击保存按钮,提示修改成功。

9.1 前台代码编写

<a href="javascript:openModifyDialog()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">编辑部门</a>

现在点击编辑部门按钮是没有用的,因为openModifyDialog方法还未编写,所以,当务之急就去script标签块中添加这个方法。

function openModifyDialog(){

    //1. 获取用户选中的所有行
    var rows = $("#grid0").datagrid("getSelections"); 

    if(rows.length != 1){

        $.messager.alert("系统提醒","请勾选一条数据!");
        return;
    }

    //2. 打开一个编辑窗口,把勾选的信息填充进去
    $("#dialog0").dialog("open");
    $("#dialog0").dialog("setTitle","部门修改");

    $("#form0").form("load",rows[0]);


}

因为修改数据的时候,还需要传给后台一个ID,所以这个ID我们设置为一个隐藏的input框:

为了保证先打开修改窗口后,再打开新增窗口,ID残留的问题,我们需要在打开新增页面的时候,就去把ID清空掉。

function openDialog(){
    $("#dialog0").dialog("open");

    //如果有ID,就清除
    $("#id").val("");

}

9.2 后台代码编写

10. 新增部门的时候,不允许部门编号重复

思路:deptid 传到后台的时候,先判断这个deptid在数据库中是否存在?如果存在,就提示“该部门编号重复!” 前台页面。如果不重复,继续之前的保存逻辑。

判断是否重复的方法: SELECT count(1) as total from tm_dept where deptid = 'BM_001'

首先,在saveDept.php文件中,把ResultData对象的定义放到最上面:

然后,在新增的逻辑中,添加如下代码,完成部门编号的非重复检测。

11. 修改部门的时候,不允许部门编号重复

这里会出现一种比较麻烦的情况。 部门编号是不允许重复的,如果我现在修改一个部门信息:

假如部门编号不改,我就把科技部改成科技2部。就会遇到一个问题。 1.如果后台进行部门编号的非重复检测,那么BM_001的确在数据库中是存在的,就是这条未修改前的数据。因此,无法进行保存。 2.如果后台不进行部门编号的非重复检测,那么,如果有人把BM_001改成其他已经存在的部门编号,比如BM_002,那么,数据库就会存在两条相同的数据了。

代码:

//根据ID是否传过来判断是新增还是修改?
    if(isset($_POST['id']) && $_POST['id'] != null){
        $id = $_POST['id'];


        //先要判断本次修改的部门编号是否和修改前一致?

        $rs = mysql_query("SELECT deptid from tm_dept where id = $id");

        while($row = mysql_fetch_array($rs)){
            
            if($row["deptid"] == $deptid){
                $sql = "update tm_dept set deptname = '$deptname' , deptid = '$deptid' where id = $id";
            }else{
                //判断部门编号deptid是否重复?
                $rs = mysql_query("SELECT count(1) as total from tm_dept where deptid = '$deptid'");

                while($row = mysql_fetch_array($rs)){
                    if($row["total"] > 0){
                        $resultData['errCode'] = -2; 
                        $resultData['errMsg'] = "部门编号".$deptid."重复,能不能换一个啊?"; 
                        echo json_encode($resultData);
                        return;
                    }
                }
            }

        }


        

    }else{


        //判断部门编号deptid是否重复?
        $rs = mysql_query("SELECT count(1) as total from tm_dept where deptid = '$deptid'");


        while($row = mysql_fetch_array($rs)){
            if($row["total"] > 0){
                $resultData['errCode'] = -2; 
                $resultData['errMsg'] = "部门编号".$deptid."重复,能不能换一个啊?"; 
                echo json_encode($resultData);
                return;
            }
        }



        $sql = "INSERT INTO tm_dept (id, deptid, deptname, createtime, updatetime) VALUES (NULL, '$deptid', '$deptname', now(), now());";
        
    }

下载地址:https://pan.baidu.com/s/1OXvqQwAmz7usgD4KqiUXLw

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏安全领域

5 分钟内造个物联网 Kafka 管道

原文地址:https://dzone.com/articles/creating-an-iot-kafka-pipeline-in-under-five-min...

496100
来自专栏杨建荣的学习笔记

物化视图实现的特殊数据复制(r11笔记第42天)

今天开发同事碰到一个有些复杂的数据复制需求,想让我帮忙看看能否实现,当然猛一听需求是不可能实现的。不过还是耐着性子和他们讨论了一下,不过我想了下,似乎还是有...

32350
来自专栏GopherCoder

专栏:010:SQL VS No SQL

16430
来自专栏杨建荣的学习笔记

Oracle数据库的一点

最近帮一些朋友处理了一些Oracle的问题,也从中发现了一些潜在的问题,索性总结出来作为借鉴。为了保证信息的敏感,里面的问题描述可能和真实情况不符,但是问...

374140
来自专栏文渊之博

时间序列数据库概览

背景 目前对于时序大数据的存储和处理往往采用关系型数据库的方式进行处理,但由于关系型数据库天生的劣势导致其无法进行高效的存储和数据的查询。时序大数据解决方案通...

58060
来自专栏杨建荣的学习笔记

一则报警信息所折射出来的诸多问题(r9笔记第14天)

在主备库环境中,如果出现数据文件级的一些不一致,后期修复会很麻烦,所以这种情况可以提前规避,减少后期的隐患,我定制了一个数据库监控选项,即数据文件状态的检查。 ...

35680
来自专栏数据和云

无备份情况下恢复MySQL误删的表

小编寄语 想必大家都知道,Oracle ACE李真旭(Roger)是国内最专业的Oracle 数据库恢复专家。但知识都是触类旁通,真正的专家,从来不会局限在一个...

1.3K110
来自专栏CSDN技术头条

【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(一)

【导读】笔者(许鹏)看Spark源码的时间不长,记笔记的初衷只是为了不至于日后遗忘。在源码阅读的过程中秉持着一种非常简单的思维模式,就是努力去寻找一条贯穿全局的...

33680
来自专栏杨建荣的学习笔记

一个MySQL死锁问题的反思

很早之前我写过几篇关于MySQL死锁的分析,比如 换个角度看待MySQL死锁的一点简单认识 MySQL死锁的两个小案例 MySQL在RR隔离级别下的unique...

37280
来自专栏王硕

原 Postgres-X2 MPP部署试验

40760

扫码关注云+社区

领取腾讯云代金券