:::
主內容區域
10-3 儲存學生投稿稿件
- 儲存的
$op值為submission_data_store,會送至index.php,故會執行index.php的這段流程。 - 在轉向部份,記得加上
op=submission_data_show,這樣才會顯示學生投稿,而非顯示投稿主題。//新增資料 case 'submission_data_store': $id = Submission_data::store(); header("location: {$_SERVER['PHP_SELF']}?op=submission_data_show&id=$id"); exit; - 修改
class/Submission_data.php的store(),然後擷取出投稿主題的投稿密碼,並比對輸入的密碼,若是不同,則轉向離開。審核時間務必註解掉,另外,亦可加入投稿的最後更新時間。//新增資料到 submission_data Submission_data::store() public static function store($data_arr = []) { global $xoopsDB, $xoopsUser; //Tools::chk_is_adm('', '', __FILE__, __LINE__); //XOOPS表單安全檢查 if (empty($data_arr)) { Utility::xoops_security_check(); $data_arr = $_POST; } $submission = Submission::get(['id' => $data_arr['submission_id']]); if (isset($submission['info']['pass_code'])) { if ($submission['info']['pass_code'] != $data_arr['pass_code']) { redirect_header($_SERVER['HTTP_REFERER'], 3, "投稿密碼錯誤"); } } $data_arr['info']['latest_update'] = date("Y-m-d H:i:s", xoops_getUserTimestamp(time())); foreach ($data_arr as $key => $value) { $$key = Tools::filter($key, $value, 'write', self::$filter_arr); } $sql = "INSERT INTO `" . $xoopsDB->prefix("submission_data") . "` ( `submission_id`, `name`, `grade`, `teacher`, `title`, `content`, `info` ) VALUES( '{$submission_id}', '{$name}', '{$grade}', '{$teacher}', '{$title}', '{$content}', '{$info}' )"; $xoopsDB->queryF($sql) or Utility::web_error($sql); //取得最後新增資料的流水編號 $id = $xoopsDB->getInsertId(); if ($id) { $TadUpFiles = new TadUpFiles("submission"); $TadUpFiles->set_col("submission_data_id", $id); $TadUpFiles->set_dir('subdir', "/{$submission_id}/{$id}"); $TadUpFiles->upload_file('submission_data_files', '', '', '', '', true, false); } return $id; }檔案上傳的路徑,可以指定放到投稿主題編號下的文章編號,避免投稿者互相看到彼此的作品圖片
10-2 投稿的 create 表單界面及物件