2011年11月19日 星期六

dreamweaver PHP mysql 可以批次更新資料的方法!

底下所提的批次更新資料的方法,是建立在你必須對於DREAMWEAVER的基本更新資料的方法已經有一定的了解之後,才易看懂筆者所寫的內容。若你對DREAMWEAVER更新單筆資料的方法尚且不懂,則不建議你繼續看下去!
這邊筆者僅針對批次更改與單筆更改資料之主要差異處作說明而已:
image
一、首先如上圖,你必須對所有要更新資料的表單欄位之名稱後面加入陣列符如上圖中的score[]
image
二、當然更新資料所必須的隱藏欄位所指向的索引欄也須需如上圖中的index[]一樣加入[]
三、接著在伺服器行為裡加入更新資料(這邊因為一般的圖資料都有提到,所以就跳過,不細述了!)
四、最後在程式碼模式下找到更新資料的語法部份,例如(注意你的語法決對不可能完全與我的一樣,所以你必須視自己的狀況調整)
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE all_data SET leader_study_1=%s, study_mark1=%s WHERE `index`=%s",
                       GetSQLValueString($_POST['score[]'], "int"),
                       GetSQLValueString($_POST['textfield[]'], "text"),
                       GetSQLValueString($_POST['index[]'], "int"));
  mysql_select_db($database_load, $load);
  $Result1 = mysql_query($updateSQL, $load) or die(mysql_error());
  $updateGoTo = "leader_study.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}
改為
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
    $countNum=count($_POST['index']);
        for($i=0 ; $i<$countNum ; $i++){
  $updateSQL = sprintf("UPDATE all_data SET leader_study_1=%s, study_mark1=%s WHERE `index`=%s",
                       GetSQLValueString($_POST['score'][$i], "int"),
                       GetSQLValueString($_POST['textfield'][$i], "text"),
                       GetSQLValueString($_POST['index'][$i], "int"));
  mysql_select_db($database_load, $load);
  $Result1 = mysql_query($updateSQL, $load) or die(mysql_error());
        }
  $updateGoTo = "leader_study.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}
注意上述的更改中,還要將原來語法中的[]刪處掉!
這樣一來才可以批次更新資料。