後臺操做的業務主要包括:對課程信息的維護(增長、刪除、修改和查詢)、對教師信息的維護和對學生信息的維護。前端
因爲上述操做大部分都是相似的,咱們只介紹對課程信息的維護,其他的部分請讀者自行參考本節的源代碼。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 }