呼び出されたときにデータを mysql に投稿するメソッドを作成しようとしています。唯一の問題は、実行時に ID が作成されるため、フィールドから正しい情報を渡す方法がわからないことです。
フィールドはwhileループを使用して作成され、ダブルクリックすると編集可能になり、ぼかしで以前の状態に戻り、データベースに加えられた変更を投稿することになっています。(これは私がこれらのいずれかを書くのは初めてです。私が明確であることを願っています!)
私のJS
function disablefarm(farmid) {
$(function() {
var farmstr = farmid.replace(/[^0-9\.]+/g, ""),
farmID = $("#farm" + farmstr + "").val(),
farmName = $("#farmn" + farmstr + "").val(),
fieldarray = $([]).add(farmName).add(farmID);
$("input:text[id=" + farmid + "]").attr('readonly', 'readonly');
$("input:text[id=" + farmid + "]").addClass("noshow");
var epost_url = "editfarm.php";
var epost_data = fieldarray.serialize();
$.post(epost_url, epost_data, function(response) {
alert(response);
});
});
}
html 要素は、出力する while ループで作成されます。
echo "<td name='farmL' ><input type='hidden' value='$id' id='farm$id' /> <input type='text' id='farmn$id' value='$fname' readonly='readonly' class='noshow' size='33' ondblclick='enablefarm(this.id)' onblur='disablefarm(this.id)' />";
そして最後に editfarm.php は次のようになります
if (filled_out($_POST)){
$efarmID = check_input ($_POST['farmID']);
$efarmName = check_input ($_POST['farmName']);
}
else{
echo "not committed";
}
$query = "UPDATE farm_name
SET farmName='".$efarmName."'
WHERE farmID=".$efarmID.";";
$result = mysql_query($query);
if(!$result)
{
echo"".stripslashes($efarmName)." not updated";}
else{
echo"".stripslashes($efarmName)." updated";
}
HTML出力は次のようになります
<tr id='row27'>
<td name='farmL'>
<input type='hidden' value='27' id='farmid27' />
<input type='text'
id='farmn27'
value='111 Gary farms'
readonly='readonly'
class='noshow'
size='33'
ondblclick='enablefarm(this.id)'
onblur='disablefarm(this.id)' />
</td>
</tr>
ありがとう!