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 }
相關文章
相關標籤/搜索