Jquery可排序的PDO更新顺序

时间:2017-09-10 13:23:06

标签: php jquery ajax pdo

我正在尝试创建一个按PDO(PHP数据对象)更新的可排序列表。 我试图解决一些问题,虽然它似乎并不想更新,但我不确定我哪里出错了。拖动工作正常,数据似乎工作正常。只是没有将它更新到数据库。

使用JQuery的主文件

 <ul id="sortable">
<?php
    $sql = "SELECT * FROM ".$prefix."question WHERE enabled = 1 ORDER BY sortby ASC";
    $stm = $dbh->prepare($sql); 
    $stm->execute();
    $u = $stm->fetchAll();

    $count = 0;

    foreach ($u as $sup) {                      
?>
    <li id="item-<?php echo $sup['id']; ?>"><?php echo $sup['title']; ?></li>
<?php } ?>
</ul>

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
  $('#sortable').sortable({
    axis: 'y',
    update: function (event, ui) {
        var data = $(this).sortable('serialize');

        // POST to server using $.post or $.ajax
        $.ajax({
            data: data,
            type: 'POST',
            url: 'order.php'
        });
    }
});
</script>

PHP文件[order.php](连接数据库很好,工作正常)

<?php
ob_start();
session_start();
$admin = true;
require "inc/config.php";

$i = 0;

foreach ($_POST['item'] as $value) {
    // Execute statement:
    // UPDATE [Table] SET [Position] = $i WHERE [EntityId] = $value
    $sql = $dbh->prepare("UPDATE ".$prefix."question SET sortby='".$i."' WHERE id=1");
    $sql->execute();

    $i++;
}

?>

如果有人能看出我的问题是什么,我真的很感激。

2 个答案:

答案 0 :(得分:0)

能够解决这个问题。实际上我是如何获得数据库的config.php的。

其余代码有效。

答案 1 :(得分:0)

由于您通过ajax调用文件,因此无法在order.php中看到任何错误,为此,您需要将ajax调用更改为以下内容:

  $.ajax({
        data: data,
        type: 'POST',
        url: 'order.php',
        success: function(data){
           alert(data); // for testing
        }
    });

现在问题我认为你在使用pdo prepare语句而没有为语句提供任何数据,你需要向execute方法提供数据,使用绑定或者使用查询方法。

 $sql = $dbh->prepare("UPDATE ".$prefix."question SET sortby= ? WHERE id=?");
 $sql->execute([$i,1]);

如果您有其他方法可以清理数据,也可以使用查询语句:

$sql = $dbh->query("UPDATE ".$prefix."question SET sortby='".$i."' WHERE id=1");