0%

[技能檢定]題組二 步驟14 製作問卷管理功能

後台的問卷管理功能只有做新增問卷而已,算是簡單的應用,唯一特別的要求是要前端可以直接點擊 更多 按鈕後在畫面上增加選項,而這個功能和題組一的 編輯次選單 一樣,所以我們只需要參照題組一的做法即可。

  1. ./back/ 目錄下建立 que.php 檔案
  2. que.php 中建立新增問卷需要的表單格式
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <fieldset>
    <legend>新增問卷</legend>
    <form action="./api/add_que.php" method="post">
    <div style="display: flex;">
    <div>問卷名稱</div>
    <div>
    <input type="text" name="subject">
    </div>
    </div>
    <div>
    <div id="opt">選項
    <input type="text" name="option[]">
    <input type="button" value="更多" onclick="more()">
    </div>
    </div>
    <div class="ct">
    <input type="submit" value="送出">
    <input type="reset" value="清空">
    </div>
    </form>
    </fieldset>

  1. 撰寫 javascript 函式 more() 用來在指定的位置插入選項
    1
    2
    3
    4
    5
    6
    function more(){
    let opt=`<div>選項
    <input type="text" name="option[]">
    </div>`
    $("#opt").before(opt);
    }

  1. 建立 ./api/add_que.php 檔案做為新增問卷的php程式檔
  2. add_que.php 中撰寫新增問卷的程式碼
  3. 這邊要注意的是因為我們是同時把題目和選項一起送出的,而資料庫在儲存時會依照 subject_id 這個欄位來判斷這筆資料是題目還是選項,因此我們在撰寫 api 時要注意資料處理的先後順序,先處理題目的新增,才能取得題目的 id 做為選項的 subject_id

/api/add_que.php

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
include_once "db.php";

//判斷主題是否存在
if(isset($_POST['subject'])){

//新增主題資料
$Que->save(['text'=>$_POST['subject'],
'subject_id'=>0,
'vote'=>0]);

//根據剛才新增的主題資料去找到主題的資料id
$subject_id=$Que->find(['text'=>$_POST['subject']])['id'];

//或是使用max()找到最大的id
//$subject_id=$Que->max('id');
}

//判斷選項是否存在
if(isset($_POST['option'])){

//使用迴圈來巡訪 $_POST['option'] 陣列
foreach($_POST['option'] as $option){

//新增選項資料
$Que->save(['text'=>$option,
'subject_id'=>$subject_id,
'vote'=>0]);
}
}

//導回後台管理頁面
to("../back.php?do=que");