題組一中除了total和bottom沒有新增功能外,其它的功能都是能新增資料的,因此我們在設計後台儲存時,希望能使用一支程式就可以完成所有資料表的新增資料,所以我們要考慮如何判斷表單過來的資料是那一張資料表,同時有些功能可以上傳圖片,因此也要考慮是否有上傳圖片的情形。
- 綜合以上的考量,我們先建立一個
upload
資料夾, - 撰寫新增功能的api如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57/**
* 因為包含共用的設定,session啟用,物件的宣告都放在根目錄下的base.php中
* 因此要執行和各資料表相關的動作時,要先引入 base.php 這個檔案
*/
include_once "../base.php";
//取得表單中的隱藏欄位 table
$table=$_POST['table'];
//將資料表的字串首字母轉為寫
$db=ucfirst($table);
//建立一個空陣列用來存放與資料表欄位對應的資料
$data=[];
//判斷是否有檔案上傳成功
if(!empty($_FILES['img']['tmp_name'])){
//如果檔案上傳成功,則取得檔案的名稱
$data['img']=$_FILES['img']['name'];
//把檔案搬到指定的上傳檔案目錄
move_uploaded_file($_FILES['img']['tmp_name'],"../upload/".$_FILES['img']['name']);
}
//由於不是每個資料表的欄位名稱都相同,表單也是,
//因此我們根據不同的資料表名來切換不同的資料取得
switch($table){
case 'title':
$data['text']=$_POST['text'];
$data['sh']=0; //title 的顯示預設為不顯示
break;
case 'admin':
$data['acc']=$_POST['acc'];
$data['pw']=$_POST['pw'];
break;
case 'menu':
$data['text']=$_POST['text'];
$data['href']=$_POST['href'];
$data['sh']=1;
break;
default:
//ad,mvim,image,news,這四張表如果有$_POST['text']就紀錄text
//不然就只要紀錄檔名就可以
if(isset($_POST['text'])){
$data['text']=$_POST['text'];
}
$data['sh']=1; //顯示預設為1
}
//利用可變變數來執行各個類別中的save()方法
//將$data陣列寫入到資料表中
$$db->save($data);
//將請求導回到原本發出請求的後台頁面中
to("../backend.php?do=".$table);
可以先做個新增資料的動作,直接在資料表中查看資料是否新增成功,也同時在upload資料夾中確認上傳圖片的功能是否正常。