[問題]利用AJAX的技術只能"新增"DB而不能更新嗎?

看板Ajax作者 (阿湯)時間11年前 (2014/07/28 17:51), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
我寫了以下的程式,要讓使用者可以選擇要修改的資料庫的資料(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
UPDATE 的引號呢?
07/28 18:06, 1F

07/28 18:14, , 2F
你說的是UPDATE後的test嗎?
07/28 18:14, 2F

07/28 18:15, , 3F
若是的話,加或不加結果都一樣
07/28 18:15, 3F

07/28 18:19, , 4F
`t_account`='{$_POST['parm1']}'
07/28 18:19, 4F

07/28 18:19, , 5F
t_data`= '{$_POST['parm2']}'
07/28 18:19, 5F

07/28 18:24, , 6F
非常感謝jhunkyoiori,真的是那裏少了引號
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
文章代碼(AID): #1JrXqMdd (Ajax)
文章代碼(AID): #1JrXqMdd (Ajax)