gpt4 book ai didi

php - 使用 Ajax 和 mySQL 进行 jQuery 排序

转载 作者:行者123 更新时间:2023-11-29 13:57:49 26 4
gpt4 key购买 nike

嘿,我已经为网站后端创建了一个可排序列表来组织我的类别,并且一切正常,因此它使用 Ajax 运行更新 SQL 语句,并且无需重新加载即可保存我的数据,但订单号我在后端显示的数据库在重新加载之前不会更改,任何帮助都会很棒,提前感谢!

PHP

        <?php
$sql = "SELECT cat_id, cat_name, cat_slug, cat_status, cat_order, sta_id, sta_name
FROM app_categories LEFT JOIN app_status
ON app_categories.cat_status = app_status.sta_id
ORDER BY cat_order ASC";

if($result = query($sql)){
$list = array();

while($data = mysqli_fetch_assoc($result)){
array_push($list, $data);
}

foreach($list as $i => $row){
?>
<div class="row" id="page_<?php echo $row['cat_id']; ?>">
<div class="column two"><?php echo $row['cat_name']; ?></div>
<div class="column two"><?php echo $row['cat_slug']; ?></div>
<div class="column two"><?php echo $row['cat_status']; ?></div>
<div class="column two"><?php echo $row['cat_order']; ?></div>
</div>
<?php
}
}
else {
echo "FAIL";
}
?>

jQuery 与 Ajax 调用

        $(document).ready(function(){
$("#menu-pages").sortable({
update: function(event, ui) {
$.post("ajax.php", { type: "orderPages", pages: $('#menu-pages').sortable('serialize') } );
}
});
});

还有我的 ajax.php,它负责更新

<?php

parse_str($_POST['pages'], $pageOrder);

foreach ($pageOrder['page'] as $key => $value) {
$sql = "UPDATE app_categories SET `cat_order` = '$key' WHERE `cat_id` = '$value'";

if(query($sql)) {
echo "YES";
}
else {
echo "NO";
}

}

?>

最佳答案

您似乎没有任何类型的代码来处理前端更新。最简单的方法是在 ajax post 中添加回调,并让服务器以 json 数据的形式发回更新信息。

所以 ajax.php 看起来更像

<?php

parse_str($_POST['pages'], $pageOrder);

foreach ($pageOrder['page'] as $key => $value) {
$sql = "UPDATE app_categories SET `cat_order` = '$key' WHERE `cat_id` = '$value'";

if(query($sql)) {
$orderSql = "SELECT cat_id, cat_name, cat_slug, cat_status, cat_order, sta_id, sta_name
FROM app_categories LEFT JOIN app_status
ON app_categories.cat_status = app_status.sta_id
ORDER BY cat_order ASC";

if($result = query($sql)){
echo json_encode(mysqli_fetch_assoc($result));
return;
}

} else {
echo json_encode( array('result' => 'failure'));
}

}

(是的,它很丑陋且未经测试,但你明白了。)

你的 javascript 看起来会是这样的

    $.post("ajax.php", {  type: "orderPages", pages: $('#menu-pages').sortable('serialize') }, function(res){
if (typeof res.result !== undefined && res.result === 'failure'){
alert('failed!');
return;
} else {
$.each(res, function(i, item){
$("#page_" + item.cat_id).find('div:eq(3)').html(item.cat_order);
});
}, 'json' );

这又很糟糕,但希望传达了这一点。

或者,您可以在移动时简单地更新排序 div 中的数字。看起来像:

   $("#menu-pages").sortable({
update: function(event, ui) {
$.post("ajax.php", { type: "orderPages", pages: $('#menu-pages').sortable('serialize') } );
$('.row').each(function(i){
$(this).find('div:eq(3)').html(parseInt(i) + 1);
});
}
});

也不要测试,假设 cat_sort 是 1 索引并且不丢失任何值等。

关于php - 使用 Ajax 和 mySQL 进行 jQuery 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15561133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com