作者cat99961 (阿汤)
看板Ajax
标题[问题]利用AJAX的技术只能"新增"DB而不能更新吗?
时间Mon Jul 28 17:51:15 2014
我写了以下的程式,要让使用者可以选择要修改的资料库的资料(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"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
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"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
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"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
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://webptt.com/cn.aspx?n=bbs/Ajax/M.1406541078.A.9E7.html
1F:推 jhunkyoiori:UPDATE 的引号呢? 07/28 18:06
2F:→ cat99961:你说的是UPDATE後的test吗? 07/28 18:14
3F:→ cat99961:若是的话,加或不加结果都一样 07/28 18:15
4F:推 jhunkyoiori:`t_account`='{$_POST['parm1']}' 07/28 18:19
5F:→ jhunkyoiori:t_data`= '{$_POST['parm2']}' 07/28 18:19
6F:→ cat99961:非常感谢jhunkyoiori,真的是那里少了引号 07/28 18:24
7F:→ cat99961:傻傻的我竟为了那个搞了很久.... 07/28 18:25
8F:→ cat99961:再次感谢... 07/28 18:26