使用jEditable&更新数据库mysqli的

时间:2015-05-27 15:07:24

标签: php jquery mysqli jeditable

首先,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文件,你有链接(我当然没找到它......) ,我也会接受。

2 个答案:

答案 0 :(得分:0)

这是不正确的:

print '<td><div class="edit" data-pk="'.ID.'">'.$row["column"].'</div></td>';
                                        ^^

没有$,因此ID是未定义的常量。 PHP可能会尝试礼貌并假设您的意思是'ID' isntead(包含字母ID的字符串),这意味着您的所有行都将显示在客户端中作为data-pk=ID,而不是data-pk=1data-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>';}

希望这有助于某人。如果有人知道我最初的想法有什么问题,我很乐意阅读答案。我仍然认为更新会更酷。