線上書籍

Home

八小時模組開發

一、關於編輯
  1. 編輯和新增幾乎是一樣的動作,差別僅在於:編輯會指定要修改哪一筆資料。
  2. 因此,在秀出表單之前,需先將資料抓出,並塞入表單做為預設值。
  3. 另外,表單需加入一個「流水號」的隱藏欄位,如此,當使用者填完送出後,系統才知道要修改哪一篇文章。
二、編輯的流程設定
  1. 由於樣板中有加入編輯的op: <a href="main.php?op=edit&sn=<{$sn}>" class="btn btn-mini btn-warning">編輯</a>
  2. 所以流程也要多一組對應設定: case "edit": add_form($sn); break;
  3. 和新增一樣呼叫 add_form() 函數,唯一不同的是,編輯時要傳入 $sn,如此,系統才知道要修改的到底是哪一筆資料。
三、修改 add_form() 函數
  1. 編輯和新增不同的地方有三:
    1. 需傳入$sn
    2. 需多一個隱藏欄位 sn
    3. 下一個op不會是insert,應為update
  2. 故,我們將函數改為: //編輯詞彙表單 function add_form($sn=""){ global $xoopsTpl,$xoopsDB; include_once(XOOPS_ROOT_PATH."/class/xoopsformloader.php"); if($sn){ $sql="select eng,cht from ".$xoopsDB->prefix("oxford")." where `sn`='{$sn}'"; $result=$xoopsDB->queryF($sql) or redirect_header('index.php', 3, mysql_error()); list($eng,$cht)=$xoopsDB->fetchRow($result); $op="update"; }else{ $op="insert"; } $form = new XoopsThemeForm('編輯詞彙', '', 'main.php', 'post', true); $input_eng =new XoopsFormText('英文', 'eng', 20 , 255 , $eng); $input_cht =new XoopsFormText('中文解釋', 'cht', 20 , 255 , $cht); $hidden_op =new XoopsFormHidden('op', $op); $hidden_sn =new XoopsFormHidden('sn', $sn); $submit_btn =new XoopsFormButton('', '', '儲存', 'submit'); $form->addElement($input_eng); $form->addElement($input_cht); $form->addElement($hidden_op); $form->addElement($hidden_sn); $form->addElement($submit_btn); $f=$form->render(); $xoopsTpl->assign("form" ,$f); }
四、流程新增update設定
  1. 當使用者按下儲存時,如果是編輯,則op為update,因此,流程要多一組設定: case "update": update($sn); break; header("location:../index.php?eng={$_POST['eng']}");
五、新增update()函數 //更新詞彙 function update($sn=""){ global $xoopsDB; $eng=$_POST['eng']; $cht=$_POST['cht']; $sql="update `".$xoopsDB->prefix('oxford')."` set `eng`='{$eng}' , `cht`='{$cht}' where sn='$sn'"; $xoopsDB->queryF($sql) or redirect_header($_SERVER['PHP_SELF'],3, mysql_error()); }