:::

12. 完成編輯功能(40分鐘)

一、關於編輯

  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());
}

 


:::

搜尋

QR Code 區塊

https%3A%2F%2Fmail.tad0616.cp22.secserverpros.com%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbdsn%3D1078%26tbsn%3D35

書籍目錄

展開 | 闔起

線上使用者

90人線上 (27人在瀏覽線上書籍)

會員: 0

訪客: 90

更多…