1.5.3 后台业务逻辑

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

因为上述操做大部分都是相似的,咱们只介绍对课程信息的维护,其他的部分请读者自行参考本节的源代码。sql

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

 

(1)增长课程数组

这个操做比较简单,咱们只需根据课程须要的参数,直接经过SQL语句进行插入数据便可。函数

function addCourse($c_name,$c_credit)

  {

      // 查询是否有相同数据,防止重复插入

      $sql = "SELECT * FROM course WHERE c_name='$c_name' AND c_credit=$c_credit";

      if($this->query($sql)!==false){

          $this->error("数据库错误:向课程表中插入重复数据");

          return false;

      }

      // 执行插入操做

      $sql = "INSERT INTO course(c_name,c_credit) values('$c_name',$c_credit)";

      return $this->query($sql);

  }

 

(2)删除课程fetch

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

function delCourse($c_id)

  {

     // 调用删除课程的存储过程

     $sql = "Call deleteCourse($c_id)";

     return $this->query($sql);

  }

 

(3)修改课程spa

修改课程的操做咱们须要慎重考虑一下,若是有教师领取了该课程的教学任务,或者学生选取了该课程,此时修改该课程,那么,修改后的课程仍是教师领取教学任务或者学生选取该课程的原意吗?所以,这里须要首先删除该课程涉及的教学表和选课表中的相关信息,而后修改该课程(这里主要时名称和学分),以便教师可以从新领取教学任务,或者学生从新选取该课程。code

咱们仍是须要经过SQL的存储过程来实现这一过程。blog

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方法),这里咱们只列出代码。

 1 function queryCourse($c_id)
 2 {
 3         $sql = "";
 4         if($c_id <= 0) // 小于等于0时查询所有课程
 5         {
 6             $sql = "SELECT * FROM course ";
 7         }
 8         else
 9         {
10             $sql = "SELECT * FROM course WHERE c_id = $c_id";
11         }
12         $course_list = array();
13         $query = $this->query($sql);
14         // 将查询结果转化为数组列表
15         while ($row = $this->fetch_array($query)) {
16             $course_list[] = array(
17                 "c_name" => $row['c_name'],
18                 "c_id" => $row['ID'],
19                 "c_credit" => $row['c_creadit']
20             );
21         }
22         // 返回结果列表
23         return $course_list;
24 }
相关文章
相关标签/搜索