[英]Updating database with jEditable & mysqli
首先,jEditable对我有效-我可以输入一个值,然后按Enter键并在表中欣赏新值。 但是,此值永远不会插入数据库中。 据我了解,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请求中提交的。
我已经在谷歌上搜索了一下,但是找不到答案。 这可能很明显,但是我找不到。 自从我将原来的准备好的语句更改为此以来,我也不再遇到错误。
非常感谢您的帮助,尤其是如果您可以向我解释我的错误,以便以后不再赘述。
如果Internet上有任何地方带有Jeditable文档中提到的save.php文件的实际完整示例(mysqli),并且您具有链接(我当然没有找到...), d也要接受。
这是不正确的:
print '<td><div class="edit" data-pk="'.ID.'">'.$row["column"].'</div></td>';
^^
没有$
,所以ID
是一个未定义的常量。 PHP可能会尽量礼貌,并假设您的意思是'ID'
ID'nottead(包含字母I
和D
的字符串),这意味着您的所有行都将在客户端显示为data-pk=ID
,而不是data-pk=1
, data-pk=2
等等
由于似乎对此没有解决方案(或者,更确切地说,我在这个项目上已经没时间了),所以我切换到模态。 如果有人遇到过这种情况,并认为模态是一个可行的选择,这就是我所做的:
我正在使用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>';}
希望这对某人有帮助。 如果有人知道我的原始想法出了什么问题,我很乐意阅读答案。 我仍然认为就地更新会更酷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.