這邊筆者僅針對批次更改與單筆更改資料之主要差異處作說明而已:
一、首先如上圖,你必須對所有要更新資料的表單欄位之名稱後面加入陣列符如上圖中的score[]
二、當然更新資料所必須的隱藏欄位所指向的索引欄也須需如上圖中的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));
}
這樣一來才可以批次更新資料。