繁体   English   中英

使用jEditable和mysqli更新数据库

[英]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(包含字母ID的字符串),这意味着您的所有行都将在客户端显示为data-pk=ID ,而不是data-pk=1data-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM