【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());";
	}
- 编辑部门功能的实现
思路:只允许用户勾选一条数据,点击编辑按钮,会跳出一个和新增数据类似的对话框。然后,用户可以修改部门名称和部门编码。点击保存按钮,提示修改成功。 
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
【php增删改查实例】第十一节 - 部门管理模块(编辑功能)的更多相关文章
- 【php增删改查实例】第九节 - 部门管理模块(模糊查询)
		
给datagrid添加一个工具栏. 效果: 模糊查询部门名称. 接下来,在工具栏区域画一个input框: <div id="toolbar" style="padd ...
 - 【php增删改查实例】第八节 - 部门管理模块(编写PHP程序)
		
首先,在同级目录新建一个query.php文件: 接着,去刷新页面,打开F12,NetWork,看看当前的请求能不能走到对应的php文件? 这就说明datagrid确实能够访问到query.php 只 ...
 - 【php增删改查实例】 第二节 - MYSQL环境配置
		
安装好xampp后,会自带一个mysql,也就是说,正常情况下,你直接这样: 就可以启动mysql了. 如果你了,下面的步骤就别看了哈. if( 启动成功 ){ return; } 如果你的电脑上已经 ...
 - 【php增删改查实例】第一节 - PHP开发环境配置
		
最近需要使用PHP,于是把平时的积累整理一下,就有了这个教程. 首先是环境配置: 1.操作系统:windos7 2.后台:PHP 3.前台:Html + js + css 4.数据库:MYSQL 5. ...
 - python链接oracle数据库以及数据库的增删改查实例
		
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
 - java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)
		
1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...
 - yii2.0增删改查实例讲解
		
yii2.0增删改查实例讲解一.创建数据库文件. 创建表 CREATE TABLE `resource` ( `id` int(10) NOT NULL AUTO_INCREMENT, `textur ...
 - SpringBoot JPA实现增删改查、分页、排序、事务操作等功能
		
今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查.分页.排序.事务操作等功能.下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and ...
 - 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具
		
本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作. 首先,找到xampp的安装目录,打开htdocs: 新建一个php文件,名称为 mysqladmin.php ...
 
随机推荐
- Python中For循环
			
1. for i in range(10): print(i) 输出结果 F:\py\pyProject\venv\Scripts\python.exe F:/py/pyProject/venv/wh ...
 - 在c/c++中调用Java方法
			
JNI就是Java Native Interface, 即可以实现Java调用本地库, 也可以实现C/C++调用Java代码, 从而实现了两种语言的互通, 可以让我们更加灵活的使用. 通过使用JNI可 ...
 - [20171225]没有备份数据文件的恢复.txt
			
[20171225]没有备份数据文件的恢复.txt --//别人问的问题,增加了数据文件没有备份,如何恢复,实际上很简单,因为当前控制文件有记录建立时间只要从建立数据文件开始的--//归档日志都存在恢 ...
 - (转载)Oracle 树操作(select…start with…connect by…prior)
			
转载地址:https://www.cnblogs.com/linjiqin/p/3152674.html 备注:如有侵权,请立即联系删除. oracle树查询的最重要的就是select…start w ...
 - Android (checkBox)
			
1.使用 setOnCheckedChangeListener()方法对checkBox进行事件监听 2.重写方法 public void onCheckedChanged(CompoundButto ...
 - javascript闭包—围观大神如何解释闭包
			
闭包的概念已经出来很长时间了,网上资源一大把,本着拿来主意的方法来看看. 这一篇文章 学习Javascript闭包(Closure) 是大神阮一峰的博文,作者循序渐进,讲的很透彻.下面一一剖析. 1. ...
 - 关于hover和after、before合用
			
通常hover后面跟的选择器,都是在myClass结构之下 的dom元素. 如果想在myClass下添加after等,就需要两个::号. 注:after/before是属于myclass的下级元素,并 ...
 - vs2015添加管理员权限
			
在工作过程中,我可能可能遇到要求编译好的程序默认以管理员权限运行,我们可以这样操作 一.新建一个manifest文件: <?xml version="1.0" encodin ...
 - Java没有头文件的原因
			
http://bbs.csdn.net/topics/100134244 C/C++ 之所以需要头文件(.h),有两个用处,一个是在开发编译的时候,在各个编译单元(Compile Unit)之间共享同 ...
 - 如何在sublime编辑器中,执行命令行脚本
			
我有个愿意,在执行命令行时,不打开那个黑乎乎命令行窗口,如果编辑器内置支持就好了. 打开vs code 和 sublime,分别按快捷键 Ctrl + ·(tab键上面那个键),vs code可以提供 ...