0%

[技能檢定]題組一 步驟7 撰寫新增功能api

題組一中除了total和bottom沒有新增功能外,其它的功能都是能新增資料的,因此我們在設計後台儲存時,希望能使用一支程式就可以完成所有資料表的新增資料,所以我們要考慮如何判斷表單過來的資料是那一張資料表,同時有些功能可以上傳圖片,因此也要考慮是否有上傳圖片的情形。

  1. 綜合以上的考量,我們先建立一個 img 資料夾用來存放上傳後的圖片。
  2. 撰寫新增功能的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
    /**
    * 因為包含共用的設定,session啟用,物件的宣告都放在./api/目錄下的db.php中
    * 因此要執行和各資料表相關的動作時,要先引入 db.php 這個檔案
    */
    include_once "./db.php";

    //取得表單中的隱藏欄位 table
    $table=$_POST['table'];

    //將資料表的字串首字母轉為大寫,並且利用可變變數取得對應的資料表物件變數
    $DB=${ucfirst($_POST['table'])};

    //如果資料表是admin,則移除$_POST陣列中的pw2這個欄位
    switch($table){
    case "admin":
    unset($_POST['pw2']);
    break;
    }

    //判斷是否有檔案上傳成功
    if(!empty($_FILES['img']['tmp_name'])){

    //把檔案搬到指定的上傳檔案目錄
    move_uploaded_file($_FILES['img']['tmp_name'],"../img/".$_FILES['img']['name']);

    //如果檔案上傳成功,則在$_POST陣列中加入上傳的檔案名稱
    $_POST['img']=$_FILES['img']['name'];

    }

    //除了admin這個資料表沒有sh這個欄位,其他資料表都有。
    if($table != 'admin'){

    //除了title這張資料表的顯示預設為0,其他的資料表預設為1
    $_POST['sh']=($table=='title')?0:1;
    }

    //移除$_POST中的table欄位,這樣$_POST中的內容和資料表中的欄位會是對應的
    unset($_POST['table']);

    //將$_POST陣列寫入到資料表中
    $DB->save($_POST);

    //將請求導回到原本發出請求的後台頁面中
    to("../back.php?do=$table");

可以先做個新增資料的動作,直接在資料表中查看資料是否新增成功,也同時在img資料夾中確認上傳圖片的功能是否正常。