我正在尝试创建一个按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++;
}
?>
如果有人能看出我的问题是什么,我真的很感激。
答案 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");