:::
主內容區域
5-1 store() 儲存資料的物件方法
- 上單元的表單界面送出後,會執行流程的
submission_store,會執行的物件方法是:Submission::store(),其預設內容如下://新增資料到 submission Submission::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; } foreach ($data_arr as $key => $value) { $$key = Tools::filter($key, $value, 'write', self::$filter_arr); } //取得使用者編號 $uid = ($xoopsUser) ? $xoopsUser->uid() : 0; $create_time = date("Y-m-d H:i:s", xoops_getUserTimestamp(time())); $sql = "INSERT INTO `" . $xoopsDB->prefix("submission") . "` ( `title`, `content`, `start`, `end`, `info`, `uid`, `create_time` ) VALUES( '{$title}', '{$content}', '{$start}', '{$end}', '{$info}', '{$uid}', '{$create_time}' )"; $xoopsDB->queryF($sql) or Utility::web_error($sql); //取得最後新增資料的流水編號 $id = $xoopsDB->getInsertId(); $TadUpFiles = new TadUpFiles("submission"); $TadUpFiles->set_col("submission_id", $id); $TadUpFiles->set_dir('subdir', "/$id"); $TadUpFiles->upload_file('submission_files', '', '', '', '', true, false); return $id; } - 可以自行傳入一個資料陣列
$data_arr - 一樣先用
Tools::chk_is_adm()檢查權限,若是沒有傳入資料陣列,那就用Utility::xoops_security_check()檢查 token 後,將$_POST做為資料陣列$data_arr以便後續處理Tools::chk_is_adm('', '', __FILE__, __LINE__); //XOOPS表單安全檢查 if (empty($data_arr)) { Utility::xoops_security_check(); $data_arr = $_POST; } - 接著用迴圈將傳入的資料陣列,一個一個的用
Tools::filter()過濾變數,確保可以存入資料庫,避免資料庫隱碼攻擊。foreach ($data_arr as $key => $value) { $$key = Tools::filter($key, $value, 'write', self::$filter_arr); } //取得使用者編號 $uid = ($xoopsUser) ? $xoopsUser->uid() : 0; $create_time = date("Y-m-d H:i:s", xoops_getUserTimestamp(time()));過濾後,可以自己設定某些變數,來強制其值,例如目前登入者的編號
$uid,或者目前的建立時間 - 接著就是寫入資料庫:
$sql = "INSERT INTO `" . $xoopsDB->prefix("submission") . "` ( `title`, `content`, `start`, `end`, `info`, `uid`, `create_time` ) VALUES( '{$title}', '{$content}', '{$start}', '{$end}', '{$info}', '{$uid}', '{$create_time}' )"; $xoopsDB->queryF($sql) or Utility::web_error($sql); //取得最後新增資料的流水編號 $id = $xoopsDB->getInsertId();執行後務必用
$xoopsDB->getInsertId()取得該資料流水號,後續會用到 -
儲存後,取得資料流水號就可以開始處理上傳檔案的部份,TadUpFiles 詳細用法可以看這裡
if ($id) { $TadUpFiles = new TadUpFiles("submission"); $TadUpFiles->set_col("submission_id", $id); $TadUpFiles->set_dir('subdir', "/$id"); $TadUpFiles->upload_file('submission_files', '', '', '', '', true, false); }只要
set_col()和set_dir()和剛剛create()中的設定一致即可 -
接著,可以輸入資料試試囉!
5. store 新增儲存