[問題]利用AJAX的技術只能"新增"DB而不能更新嗎?
我寫了以下的程式,要讓使用者可以選擇要修改的資料庫的資料(test.php),但並不是
馬上就修改到DB,而是會讓使用者填完修改的資料(testform.php)後,顯示使用者修改
的資料以讓使用者確認送出的資料後(edittestform.php),才更改寫進DB(ajax.php)。
資料表名稱為test,裡面有3個欄位t_id、t_account、t_data(t_id為int主鍵自動增加
;其餘2個欄位均為text型態)
4個網頁的執行順序為
1.test.php(展示資料表內的資料,並讓使用者選擇要修改哪筆資料)
2.testform.php(修改頁面)
3.edittestform.php(展示使用者修改的資料,以便使用者確認修改資料)
4.ajax.php(修改資料庫)
//----------------------------------------------test.php----------------------------------------------
<?php
include("mysql.inc.php");
$query_RecFindUser = "SELECT * FROM test";
$RecFindUser=mysql_query($query_RecFindUser);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"" rel="nofollow">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="" rel="nofollow">http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<form action="testform.php" method="POST" name="formrevise" id="formrevise"
onSubmit="return checkForm();">
<h1>帳號資料</h1>
<table width="50%" border="1" >
<tr><td>帳號</td><td>資料 </td><td>修改</td></tr>
<?php while($row=mysql_fetch_array($RecFindUser)){?>
<tr>
<td><?php echo $row["t_account"];?></td>
<td><?php echo $row["t_data"];?></td>
<td><a href='testform.php?edit=<?php echo $row["t_id"]?>'>修改</a>
</td>
</tr>
<?php }?>
</table>
</form>
</body>
</html>
//------------------------------- testform.php-------------------------------------------------------
<?php
include("mysql.inc.php");
if (isset($_GET['edit'])){
$editsql="SELECT * FROM `test` WHERE `t_id`="."'".$_GET["edit"]."'";
$edit_result= mysql_query($editsql);//執行SQL
$row=mysql_fetch_array($edit_result);//執行結果放到$editrow陣列
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"" rel="nofollow">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="" rel="nofollow">http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
修改資料
<form method="post" action="edittestform.php" >
ID:<?php echo $row['t_id'];?>
<br>
帳號<input type="text" name="t_account" value="<?php echo $row['t_account'];?>
">
<br>
資料<input type="text" name="t_data" value="<?php echo $row['t_data'];?>">
<br>
<input type="hidden" name="t_id" value="<?php echo $row['t_id'];?>" />
<br/>
<input type="submit" name="Submit2" value="修改資料">
<input type="reset" name="Submit3" value="重設資料">
<input type="button" name="Submit" value="回上一頁" onClick="window.history
.back();">
</form>
</body>
</html>
//--------------------------edittestform.php--------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"" rel="nofollow">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="" rel="nofollow">http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
<script>
//執行AJAX
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function runajax(parm1,parm2,parm3)
{
var url = "ajax.php?&parm1="+parm1;
url += "&parm2="+parm2;
url += "&parm3="+parm3;
url += "&parm="+new Date().getTime();
if(XMLHttpRequestObject)
{
//var obj = document.getElementById(divID);
XMLHttpRequestObject.open("POST", url);
XMLHttpRequestObject.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200)
{
alert('修改成功');
//obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(url);
}
}
</script>
</head>
<body>
您輸入的資料如下:
<table>
<tr><td>ID</td><td><?php echo $_POST['t_id'];?></td></tr>
<tr><td>帳號</td><td><?php echo $_POST['t_account'];?></td></tr>
<tr><td>資料</td><td><?php echo $_POST['t_data'];?></td></tr>
</table>
<input name="submit" type="submit" value="確定送出"
onclick="runajax('<?php echo $_POST['t_account'] ?>',
'<?php echo $_POST['t_data'] ?>','<?php echo $_POST['t_id'] ?>')">
<input type="reset" name="Submit2" value="重設資料">
<input type="button" name="Submit3" value="回上一頁"
onClick="window.history.back();">
</body>
</html>
//-------------------------ajax.php-------------------------------------------------------------------
<?php
header('Content-Type:text/html;charset=utf-8');
include("mysql.inc.php");
//修改資料
$editsql="UPDATE test SET `t_account`={$_POST['parm1']},`t_data`=
{$_POST['parm2']} WHERE `t_id`={$_POST['parm3']}";
mysql_query($editsql);
//新增資料
//$insertsql="INSERT INTO `test` ( `t_account`, `t_data`)
// VALUES ('{$_POST['parm1']}','{$_POST['parm2']}')";
// mysql_query($insertsql);
?>
其中ajax.php中要更新資料無法成功,但若將更新資料的那段註解掉,而將新增資料的
那段解除註解,卻可以新增資料成功。
究竟怎麼回事???
打了這麼多,希望各位高手有耐心看完,若知道我的問題所在的,也請麻煩告訴我一下
感激不盡....我弄了好久,都不知是怎麼回事?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.135.38
※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1406541078.A.9E7.html
推
07/28 18:06, , 1F
07/28 18:06, 1F
→
07/28 18:14, , 2F
07/28 18:14, 2F
→
07/28 18:15, , 3F
07/28 18:15, 3F
推
07/28 18:19, , 4F
07/28 18:19, 4F
→
07/28 18:19, , 5F
07/28 18:19, 5F
→
07/28 18:24, , 6F
07/28 18:24, 6F
→
07/28 18:25, , 7F
07/28 18:25, 7F
→
07/28 18:26, , 8F
07/28 18:26, 8F
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章
6
38