大丈夫。私はjEditableが初めてです。私がjEditableで抱えている問題を説明しましょう。
データベースにこの単純なテーブルがあります-
id car make
1 panamera porsche
2 italia ferraris
3 avantador lamborghini
4 slk mercedes
そして、このテーブルをwhileループでエコーします。以下はコードです-
<script type="text/javascript">
<?php
$query2 = "SELECT * FROM inplace LIMIT 0, 6";
$result2 = mysql_query($query2) or die ('Query couldn\'t be executed');
$row2 = mysql_fetch_assoc($result2);
?>
$(function() {
$(".items").editable("handler.php", {
submitdata : {userid: "<?php echo $row2['id']; ?>"},
indicator : "<img src='img/indicator.gif'>",
tooltip : "Doubleclick to edit...",
event : "click",
onblur : "submit",
name : 'newvalue',
id : 'elementid',
});
});
</script>
</head>
<body>
<ul>
<?php
$query = "SELECT * FROM inplace LIMIT 0, 6";
$result = mysql_query($query) or die ('Query couldn\'t be executed');
while ($row = mysql_fetch_assoc($result)) {
echo '<li class="items" id="car">'.$row['car'].'</li>';
echo '<li class="items" id="make">'.$row['make'].'</li>';
}
?>
</ul>
上記のコードでは、jeditable スクリプトでnewvalue
(ユーザーが編集) と(car または make) を渡しています。elementid
また、更新する正しいデータベース ID を識別するのに役立つ識別子がもう 1 つ必要です。だから私はデータベースIDを渡そうとしていますsubmitdata : {userid: "<?php echo $row2['id']; ?>"}
。その方法が正しいかどうかはわかりません。
以下は、「handler.php」ファイルの更新クエリです-
require("db.php");
function fail($msg) {
header('HTTP/1.0 404 Not Found');
die($msg);
}
$id = (int)@$_POST['userid'];
$field = @$_POST['elementid'];
$allowed_fields = array('car','make');
if (!in_array($field, $allowed_fields)) fail('Invalid or missing field.', 404);
$newvalue = $_POST['newvalue'];
$query = "UPDATE inplace SET `$field`='$newvalue' WHERE id=$id";
$result = mysql_query($query);
echo $newvalue;
ここでの問題は、これsubmitdata : {userid: "<?php echo $row2['id']; ?>"}
が 1 番目の ID のみを渡していることです。これは、1 つの ID のみを渡すことを意味します。italia
そのため、id 2 と 3 にそれぞれ属するorを編集しても、avantador
最初の id が更新されます。クエリをエコーすると、どの車を編集しても、常に次のように表示されUPDATE inplace SETcar='volante' WHERE id=1
ます。submitdata に 2 or 3 or 4 を直接書くと正しく更新されます。1 つの ID のみを渡します。id="car-'.$row['id'].'"
誰かが私に like を使ってから爆発させてから foo などを使うように提案しました。私はそれを使ってみましたが、私にはうまくいきませんでした。これに対する解決策を探しています。