1
"guests"という名前のデータベースが2つの列(SeatとName)を持っています。 私はこのデータベースをphpページに表示したいのですが、ユーザーは "name"値をダブルクリックして編集し、別の場所をクリックするとデータベースを更新します(ぼかしてください)。PHP + Ajax + jQueryを使用した編集可能なデータベーステーブル
PHP:
<?php
include "connect.php";
$result = mysqli_query($con, "SELECT * FROM guests");
echo "<table>";
while($row = mysqli_fetch_assoc($result)){
echo "<tr><td contenteditable='true' onClick='showEdit(this);' onBlur='saveToDatabase(this,'Name','".$row['seat']."')'>" . $row['Name'] . "</td>
<td>" . $row['seat'] . "</td></tr>";
}
echo "</table>";
?>
のjQuery:
<script>
function saveToDatabase(editableObj,what,where) {
$(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right");
$.ajax({
url: "handle.php",
type: "POST",
data:'what='+what+'&newvalue='+editableObj.innerHTML+'&where='+where,
success: function(data){
$(editableObj).css("background","#FDFDFD");
}
});
}
</script>
サーバ側(handle.php):
<?php
include "connect.php";
$what = $_POST["what"];
$newvalue = $_POST["newvalue"];
$where = $_POST["where"];
$sql = "UPDATE guests SET $what='$newvalue' WHERE seat='$where'";
if ($con->query($sql) === TRUE) {
header("Location: success.php");
} else {
header("Location: error.php");
}
?>
現在、ユーザーの編集 "名前" の後に他の場所をクリックすると何も起こらず、データベースは更新されません。
更新クエリには何がありますか? –
$ sqlステートメントの外観を確認しましたか?エラーログはありますか? – RGriffiths
Zain Farooq - "what"はどの列(この場合は "name")、 "where"はどの行にあるかです。このテストでは、名前と座席のみがありますが、電子メール、電話などの他の列を追加する予定です。これが便利な部分です。システムは、ユーザが編集しているものを知る必要があります。 – Jonhz