首先,jEditable适用于我 - 我可以输入一个值,点击输入并享受表中新值的视觉效果。但是,此值永远不会插入到数据库中。 据我所知,来自jEditable网站的jQuery代码
$(document).ready(function() {
$('.edit').editable('http://www.example.com/save.php');
});
我已更改为链接到我的update.php脚本
error_reporting(E_ALL ^ E_NOTICE);
session_start();
$servername = "localhost";
$username = "root";
$password = "";
$database = "database";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$value = $_POST['value'];
$id = $_POST['id'];
echo $value;
$updateTest=$conn->query("UPDATE table SET column='".$value."' WHERE ID='".$id."'");
应该更新数据库,但没有任何反应。当我查看Firefox的网络日志功能时,我可以看到没有提交ID(我不知道这个ID应该来自哪里,示例中没有任何内容),但值是那里。但是,似乎没有来自服务器的响应。
表格本身可能就是问题所在:
while($row = $results->fetch_assoc()) {
$ID = $row["ID"];
print '<tr>';
print '<td><div class="edit" data-pk="'.$ID.'">'.$row["column"].'</div></td>';
print '</tr>';
(我遗漏了SELECT语句,因为其他所有内容都正确显示)
可悲的是,没有解释为什么div应该有一个id - 显然不是POST请求中提交的内容。
我已经搜索了一下,但我找不到答案。这可能很明显,但我找不到它。自从我将原来准备好的陈述改为此后,我就不再有错误了。
我会非常感激任何帮助,特别是如果你能向我解释我的错误,我将来不再重复。
如果互联网上有任何地方有一个实际完整(mysqli)的例子,说明了Jeditable文档中提到的save.php文件,你有链接(我当然没找到它......) ,我也会接受。
答案 0 :(得分:0)
这是不正确的:
print '<td><div class="edit" data-pk="'.ID.'">'.$row["column"].'</div></td>';
^^
没有$
,因此ID
是未定义的常量。 PHP可能会尝试礼貌并假设您的意思是'ID'
isntead(包含字母I
和D
的字符串),这意味着您的所有行都将显示在客户端中作为data-pk=ID
,而不是data-pk=1
,data-pk=2
等......
答案 1 :(得分:0)
由于似乎没有解决方案(或者更准确地说,我这个项目耗尽时间),我切换到了模态。如果有人遇到这个并认为模态是一个可行的选择,这就是我所做的:
我正在使用GET表单和更新页面,根据请求来自哪个页面更新不同的表 - 这就是“ref”的用途。
update.php:
$updateID=$_GET['id'];
$updateRef=$_GET['ref'];
$col1=$_GET['col1'];
$col2=$_GET['col2'];
if($updateRef == "refpage"){
$updateTable=$conn->query("UPDATE my_table SET col1='".$col1."', col2='".$col2."' WHERE ID='".$updateID."'");
header("Location: refpage.php");
die();
}
我的模态是用表行生成的,这可能是任何人曾经用过的最丑陋的解决方案,但是它有效......(不能在表中显示表单,因为表中的div内的表是一个可怕的主意。)
$results = $conn->query("SELECT col1, col2 ID FROM my_table");
while($row = $results->fetch_assoc()) {
$ID = $row["ID"];
$modalID = $modalID + 1;
print '<tr>';
print '<td>'.$row["col1"].'</td>';
print '<td>'.$row["col2"].'</td>';
print '<td><a href="#" data-toggle="modal" data-target="#editModal'.$modalID.'"><span class="glyphicon glyphicon-pencil" style="float: right !important"></span></a></td>';
print '</tr>';
echo '<div class="modal fade" id="editModal'.$modalID.'" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2 class="modal-title">Delete</h2>
</div>
<div class="modal-body">
<form action="update.php" method="get">
<div class="row">
<div class="col-xs-6">
col1:
</div>
<div class="col-xs-6">
<input type="text" value="'.$row["col1"].'" id="col1" name="col1" />
</div>
</div>
<div class="row">
<div class="col-xs-6">
col2:
</div>
<div class="col-xs-6">
<input type="text" value="'.$row["col2"].'" id="col2" name="col2" />
</div>
</div>
<input type="hidden" id="ref" name="ref" value="refpage" />
<input type="hidden" name="id" value="'.$ID.'" />
<input class="btn btn-md" type="submit" id="update" name="update" value="Update" />
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-md" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>';}
希望这有助于某人。如果有人知道我最初的想法有什么问题,我很乐意阅读答案。我仍然认为更新会更酷。