0

AJAX(CMSで使用するため)を介して呼び出すフォームがあり、このフォームを使用してコンテンツのデータベースを更新しますが、機能せず、どこにあるのかわかりません。

フィールドはすべてデータベースの行、列などで正しく入力され、データには現在存在するものが事前に入力されているため、すべて送信まで機能します。問題は、AJAX submit()関数とeupdate.phpMySQLクエリの間のどこかにあります。

eform.php(別のページeindex.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を確認しても、何も変更または更新されていません。

すべての返信を事前に感謝します、これを修正できることを願っています:)乾杯

4

1 に答える 1

2

AJAX を使用してデータを送信しているため、form要素を使用する必要はありません (特に、正常に送信されないようにするために追加の操作を行う必要があります)。

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

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

于 2011-09-11T11:47:06.487 に答える