このような質問がたくさんありますが、.ajax() 関数に入るのにも問題があります。ここで以前の問題を解決しました: JQuery と Ajax を使用してすべてのセルではなくクリックされたセルにアクセスする
私のフォローアップには応答がありませんでした。コードを再度投稿する代わりに、そこに残します (別段の指示がない限り)。とにかく私が理解するのを助けることができます 1:私の変更を反映するためにvar field
andを取得します。および 2:変数であるためのvar text
にアクセスする方法。.parent() 内でそれを設定するにはどうすればよいですか? ありがとう。id
tr
編集:
これが私のスクリプトです:
<script type="text/javascript">
$(document).ready(function()
{
$(".edit_td").click(function()
{
$(this).children(".text").hide();
$(this).children(".editbox").show();
}).change(function()
{
alert("working");
var id=$(this).parent();
var field=$("#input_"+ id).val();
var text=$(this).children(".editbox").val();
var dataString = 'id='+ id +'&field='+ field +'&text='+ text;
//$("#first_"+ID).html('<img src="load.gif" />'); // Loading image
if(input != text)
{
$.ajax({
type: "POST",
url: "table_edit_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("#first_"+ID).html(first);
$("#last_"+ID).html(last);
}
});
}
else
{
alert('Enter something.');
}
});
// Edit input box click action
$(".editbox").mouseup(function()
{
return false
});
// Outside click action
$(document).mouseup(function()
{
$(".editbox").hide();
$(".text").show();
});
});
</script>
テーブルを表示するための私のphpは次のとおりです。
public function displayTable($table)
{
//connect to DB
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
echo "<table id='table' border='1'>"; //start an HTML table
$dbtable = $table;
$fields =array();
$result = mysqli_query($con, "SHOW COLUMNS FROM ".$dbtable);
//fill fields array with fields from table in database
while ($x = mysqli_fetch_assoc($result))
{
$fields[] = $x['Field'];
}
$fieldsnum = count($fields); //number of fields in array
//create table header from dbtable fields
foreach ($fields as $f)
{
echo "<th>".$f."</th>";
}
//create table rows from dbtable rows
$result = mysqli_query($con, "SELECT * FROM ".$dbtable);
while ($row = mysqli_fetch_array($result))
{
$rowid = $row[$fields[0]];
echo "<tr class='edit_tr' id='".$rowid."'>";
foreach ($fields as $f)
{
echo "<td class='edit_td'><span id='span_".$rowid."' class='text'>".$row[$f]."</span>
<input type='text' value='".$row[$f]."' class='editbox' id='input_".$rowid."'/> </td>";
}
$rowid++;
echo "</tr>";
}
echo "</table>"; //close the HTML table
//close connection
mysqli_close($con);
}
自分の.change()
関数に入っているかどうかさえわかりませんが、いったんデータベースIDに対応する行IDに設定したいと思いvar id
ます(これにより、主キーで更新クエリを実行できます)。id が次にやりたいことはvar field
、選択したフィールドの列ヘッダーに設定するtd
ことです。これにより、データベースから選択するフィールドがわかります。次にしたいのはvar text
、変更されたテキストをテキストボックスから反映して、更新クエリに送信することです。
POST
今、それを table_edit_ajax.php に送信して更新クエリを実行できるようにしたいと思います。私はそれをすべて行う方法について本当に混乱しています。明らかに、私はajaxとjavascriptに非常に慣れていません。
編集: ファイル: table_edit_ajax.php
<?php
//connect to DB
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
echo 'in table_edit';
$id = mysqli_escape_String($con, $_POST['id']);
$table = "owners";
$field = $_POST['field'];
$text = mysqli_escape_String($con, $_POST['text']);
$query = "UPDATE owners SET ".$field."='".$text."' WHERE id = '".$id."'";
mysqli_query($con, $query);
//close connection
mysqli_close($con);
?>