2011-09-11 7 views
0

私はAJAX(CMSで使用する)を介して呼び出すフォームを持っていますが、このフォームはコンテンツのデータベースを更新するために使用されますが、動作しません。どこを見つけてください。AJAX POSTでMySQLデータベースを更新しない問題

フィールドはすべてデータベースの行や列などで正しく記入されているため、提出までにすべての処理が行われ、データは現在そこに格納されています。この問題は、AJAX submit()関数とeupdate.php MySQLクエリの間にあります。

(表示される別のページ、eindex.php、経由で引っ張っ)eform.php

<?php 
require("../mcfrdb.php"); 
// Included database once using the require method 

$item = $_POST['item']; 
$page = $_POST['page']; 

$row = mysql_query("SELECT * FROM mcfr WHERE pageid = '$page'"); 
$data = mysql_fetch_array($row); 
?> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"> </script> 
<script type="text/javascript">var $j = jQuery.noConflict();</script> 

<script type="text/javascript"> 

function submit(){ 
$j.ajax({ 
type:"POST", 
url:"eupdate.php", 
data: "item=" + $j('#item') + "&itemcont=" + $j('#itemcont') + "&page=" + $j('#page'), 
success:function(response){ 
    $j("#msg").html(response); 
    } 
}); 
} 

</script> 
<div id="msg"></div> 
<form id = "edititem" name = "edititem" onsubmit="return false;" method="post" > 
<textarea cols="20" rows="5" name="itemcont" id="itemcont"><? echo $data[$item]; ?></textarea> <br/> 
<input type="text" name="item" id="item" value="<? echo $item; ?>"><br/> 
<input type="text" name="page" id="page" value="<? echo $page; ?>"><br/> 
<input type="button" value="make changes" onclick="submit()" > 
</form> 

eupdate.php

<?php 
require("../mcfrdb.php"); 
// Included database once using the require method 

$item=$_POST['item']; 
$page=$_POST['page']; 
$newcont=$_POST['itemcont']; 

$row = mysql_query("UPDATE mcfr SET '$item' = '$newcont' WHERE pageid = '$page'"); 

?> 

私は私のDBをチェックすると、提出する私のボタンをクリックしてくださいこの後、何も変更または更新されていません。

すべての返信を事前に感謝しますが、ここで私たちは、これが固定得ることができます願っています:) 乾杯

答えて

2

あなたはAJAXを使用してデータを提出しているので、あなたは特にそれこと(form要素を使用する必要はありませんそれが正常に提出されないようにするために追加の作業が必要です)。

とにかく、基本的な問題はおそらく、フィールドの値を取得する方法ではありません。 $j('#item')は、その値ではなく、item入力にバインドされたjQueryオブジェクトを返します。値を取得するには、メソッドを使用してください(例:$j('#item').val())。

また、SQLクエリで使用する前に、PHPスクリプトで投稿されたデータをエスケープする必要があります。そうしないと、恐ろしいSQLインジェクション攻撃に対して脆弱です。説明については、mysql_real_escape_stringのドキュメントを参照してください。http://php.net/manual/en/function.mysql-real-escape-string.php

+0

あなたの投稿のおかげで、エコーが正常に機能するようになりました。 – ben

+0

最後のコメントを無視し、ただそれを修正し、私のアポストロフィをバックスティックに変更しました ' – ben

関連する問題