问题描述
我想创建一个在每个表行内都有一个文本框的列。用户可以在文本框中写入任何文本,然后单击“保存”按钮以将其保存在数据库中。此外,文本框可以无限次编辑。我的代码如下:
index.php
<?php include 'dbh.php' ?>
<?php include 'search.php' ?>
<?php
if (isset($_COOKIE["fcookie1"]))
echo $_COOKIE["fcookie1"];
else
echo "Cookie Not Set";
if (isset($_COOKIE["fcookie2"]))
echo $_COOKIE["fcookie2"];
else
echo "Cookie Not Set";
$var1 = $_COOKIE["fcookie1"];
$var2 = $_COOKIE["fcookie2"];
$conn = mysqli_connect($servername,$username,$password,$database);
$sql = "UPDATE test_data SET name='$var2' WHERE id='$var1'";
$query_run= mysqli_query($conn,$sql);
if($query_run){
echo '<script type="text/javascript"> alert(Data Updated)</script>';
} else {
echo '<script type="text/javascript"> alert(Data Not Updated)</script>';
}
?>
name_edit.php
[]
我的想法是让用户写任何文本。然后,当单击“保存”按钮时,我将“抓取”文本及其期望的ID并将其保存到Cookie。然后,该cookie将在name_edit.php中回显,并将其插入sql代码中,然后将更新我的数据库。
我不确定要在form标记内的“ value”中包含什么。如果数据库中有数据,则将其显示在也可以编辑的文本框中,否则显示空白以插入文本。
我是编码的新手,如果我的想法是正确的或者应该以其他方式使用它,我会感到困惑。
解决方法
我做了一些研究,发现我不必使用表格,而是使用“ contenteditable”。要编辑我更改的特定列
<td><input type='text' name='name' value='<?NOT SURE WHAT TO INCLUDE HERE ?>'/></td>
<td><input type='submit' value='Save' id='" . $row['test_id'] . "' class='name' /></td>
对此:
<td class='name' data-id1='" . $row['test_id'] . "' contenteditable='true'>".$row['name']."</td>
对于我的jquery,我添加了以下内容:
<style>
.editMode{
border: 1px solid black;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
// Add Class
$('.name').click(function(){
$(this).addClass('editMode');
});
// Save data
$(".name").focusout(function(){
$(this).removeClass("editMode");
var id = $(this).closest('tr').find("td:nth-child(2)").text();;
var value = $(this).text();
$.ajax({
url: 'name_edit.php',type: 'post',data: { value:value,id:id },success:function(response){
alert('Edits Saved');
return false;
}
});
});
});
</script>
在php端,我只是做了以下事情:
<?php include 'dbh.php' ?>
<?php
$conn = mysqli_connect($servername,$username,$password,$database);
$field = $_POST['field'];
$value = $_POST['value'];
$id= $_POST['id'];
$sql = "UPDATE test_data SET name='".$value."' WHERE test_id='".$id."'";
mysqli_query($conn,$sql);
echo 1;
?>