【1.5 php基础】1.5.3 后台业务逻辑

后台操作的业务主要包括:对课程信息的维护(增加、删除、修改和查询)、对教师信息的维护和对学生信息的维护。

由于上述操作大部分都是类似的,我们只介绍对课程信息的维护,其余的部分请读者自行参考本节的源代码。

这里,为本节的业务先定义一个类(backAction),这个类与上一节的业务逻辑处理类相似,也要继承数据库处理类,类图如下所示

 

(1)增加课程

这个操作比较简单,我们只需根据课程需要的参数,直接通过SQL语句进行插入数据即可。

function addCourse($c_name,$c_credit)
{
	// 查询是否有相同数据,防止重复插入
	$sql = "SELECT * FROM course WHERE c_name='$c_name' AND c_credit=$c_credit";
	$query = $this->query($sql);
	if($query->num_rows!=0){
		$this->error("数据库错误:向课程表中插入重复数据");
		return false;
	}
	// 执行插入操作
	$sql = "INSERT INTO course(c_name,c_credit) values('$c_name',$c_credit)";
	return $this->query($sql);
}

(2)删除课程

删除课程在前面的SQL操作时已经介绍过,需要通过调用存储过程的方式进行。

function delCourse($c_id)
{
	// 调用删除课程的存储过程
	$sql = "Call deleteCourse($c_id)";
	return $this->query($sql);
}

(3)修改课程

修改课程的操作我们需要慎重考虑一下,如果有教师领取了该课程的教学任务,或者学生选取了该课程,此时修改该课程,那么,修改后的课程还是教师领取教学任务或者学生选取该课程的原意吗?因此,这里需要首先删除该课程涉及的教学表和选课表中的相关信息,然后修改该课程(这里主要时名称和学分),以便教师能够重新领取教学任务,或者学生重新选取该课程。

我们还是需要通过SQL的存储过程来实现这一过程。

delimiter $
CREATE PROCEDURE UpdateCourse(IN cid int,IN new_name VARCHAR(30),IN new_credit int)  
    -- 声明修改课程的存储过程(函数)参数为课程ID,新的课程名称和学分
BEGIN	
	DECLARE i_error integer; -- 定义一个变量,用于接收出错信息
	DECLARE CONTINUE handler FOR SQLEXCEPTION SET i_error = 1; -- 一旦出错则将变量设置为1
	START TRANSACTION ;   -- 发起事务
	DELETE FROM teaching WHERE t_ID=tid AND c_ID=cid;   -- 删除教学表中有关该课程数据
	DELETE FROM selection WHERE c_ID=cid;  -- 删除选课表中有关该课程数据
	UPDATE course SET c_name=new_name,c_credit=new_credit 
	WHERE c_id=cid;        --更新课程表
	IF i_error = 1 THEN    -- 判断是否出错
		ROLLBACK;          -- 回滚事务
	ELSE
		COMMIT;             -- 提交事务
	END IF;
END $

在PHP中,我们直接调用该存储过程。

function changeCourse($c_id,$c_name,$c_credit)
{
	//调用修改课程的存储过程
	$sql = "Call UpdateCourse($c_id,$c_name,$c_credit)";
	return $this->query($sql);
}

(4)查询课程

查询课程在前端中已有实现(LoadCourse方法),这里我们只列出代码。

function queryCourse($c_id)
{
	$sql = "";
	if($c_id <= 0) // 小于等于0时查询全部课程
	{
		$sql = "SELECT * FROM course ";
	}
	else
	{
		$sql = "SELECT * FROM course WHERE c_id = $c_id";
	}
	$course_list = array();
	$query = $this->query($sql);
	// 将查询结果转化为数组列表
	while ($row = $this->fetch_array($query)) {
		$course_list[] = array(
			"c_name" => $row['c_name'],
			"c_id" => $row['ID'],
			"c_credit" => $row['c_creadit']
		);
	}
	// 返回结果列表
	return $course_list;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值