使用php和MySql保存可排序列表的顺序

时间:2014-07-18 13:56:59

标签: php mysql jquery-ui

我有一个可以用jQuery ui排序的列表。我能够保护用户所做的更改并将其存储在var $ order中。我的问题是我不知道如何在MySql数据库中保存它。如何保护MySql表中的顺序? (请从最基本的解释,我只是学习php)

HTML。的index.html:

<ul id="sortable">
    <li id="1">item1</li>
    <li id="2">item2</li>
    <li id="3">item3</li>
</ul>

JQUERY。的index.html:

$('#sortable').sortable({ 
    update: function(event, ui) { 
        var newOrder = $(this).sortable('toArray').toString(); 
        $.get('6.php', {order:newOrder};
        }); 
    }
});

PHP:6.php:

$order = $_GET['order'];
// echo $order; // this gives something like 2,3,1

如何使用php和Mysql在下表中安全$ order? 我应该更改ID以提供新订单吗?将订单存储在新列中更好吗?如何按顺序挑选每个元素并放在桌子的正确位置?

类似的东西:

mysqli_query($con,"UPDATE MyTable 
                   SET ...
                   WHERE ... ");

MYSQL表MyTable:

id    concept    order
-----------------------
1     item1
2     item2
3     item3

3 个答案:

答案 0 :(得分:1)

$order=explode(',',$_GET['order']);
foreach($order as $num=>$id){
    if((int)$id!=0){
        mysqli_query("UPDATE `MyTable` SET `order`='".$num."' WHERE `id`='".(int)($id)."'");
    }
}

0)$order=explode(',',$_GET['order']); - 在此$order=array(2,3,1);

之后

1)在sql查询中可以使用order字段。需要接受“`”。

2)特别用于停止sql注入 - 更好(和更快)的方法 - 将即将到来的变量转换为整数格式(详见评论中的答案)。

3)在foreach中写入$ num - variable - 数组元素的顺序号。 0,1,2, - 可用于数据库记录顺序。

答案 1 :(得分:1)

使用每个项目的正确顺序更新数据库:

$order = $_GET['order'];
    // echo $order; // this gives something like 2,3,1


$itemIds = explode(',', $_GET['order']);

foreach($itemIds as $priority => $itemId) {
    // Here you have to update your table, something like UPDATE items SET priority = $priority WHERE id = $itemId
}

然后查询以正确的顺序获取所有项目:

SELECT * FROM items ORDER BY priority 

(&#39; order&#39;是SQL中的保留关键字,因此您不应该调用您的字段&#39; order&#39;,此处我选择了&#39;优先级等。)

答案 2 :(得分:0)

如果只有字符串,你可以爆炸订单。当您插入它时,您可以将数组键用作排序编号。

$order = $_GET['order'];
$items = explode(',', $order);

foreach($items as $key => $item) {
// Do insert where order = $key
}

希望这可以帮助你:)