2016-08-21 11 views
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"); 
} 
?> 

現在、ユーザーの編集 "名前" の後に他の場所をクリックすると何も起こらず、データベースは更新されません。

+0

更新クエリには何がありますか? –

+0

$ sqlステートメントの外観を確認しましたか?エラーログはありますか? – RGriffiths

+0

Zain Farooq - "what"はどの列(この場合は "name")、 "where"はどの行にあるかです。このテストでは、名前と座席のみがありますが、電子メール、電話などの他の列を追加する予定です。これが便利な部分です。システムは、ユーザが編集しているものを知る必要があります。 – Jonhz

答えて

1

onClick機能を持つトリガーを実行する場合は、onBlurを使用する必要はありません。したがって、このコードはあなたの接続がOKです:

<?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='saveToDatabase(this,'Name','".$row['seat']."')'>" . $row['Name'] . "</td> 

<td>" . $row['seat'] . "</td></tr>"; 
} 
echo "</table>"; 
?> 

<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=&where='+where, 
     success: function(data){ 
      $(editableObj).css("background","#FDFDFD"); 
     } 
    }); 
} 
</script> 

<?php 
//handle.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)) { 
    header("Location: success.php"); 
} else { 
    header("Location: error.php"); 
} 
?> 
関連する問題