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

使用php和MySql保存可排序列表的顺序,php,mysql,jquery-ui,Php,Mysql,Jquery Ui,我有一个可以用jqueryui排序的列表。我能够保护用户所做的更改,并将其存储在var$顺序中。我的问题是,我不知道如何将其保存到MySql数据库中。如何保护MySql表中的订单?(请从最基本的角度解释,我只是在学习php) HTML。index.html: <ul id="sortable"> <li id="1">item1</li> <li id="2">item2</li> <li id="3"&g

我有一个可以用jqueryui排序的列表。我能够保护用户所做的更改,并将其存储在var$顺序中。我的问题是,我不知道如何将其保存到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>
$('#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

如果该顺序只有一个字符串,则可以分解该顺序。插入时,可以使用数组键作为排序号

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

foreach($items as $key => $item) {
// Do insert where order = $key
}
希望这对你有帮助:)

0)
$order=explode(',',$\u GET['order'])-在此之后
$order=数组(2,3,1)

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

2) 特别适用于停止sql注入-更好(更快)的方法-将即将到来的变量转换为整数格式(详细信息请参见我在注释中的答案)


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

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

$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 

(“order”在SQL中是一个保留关键字,因此您不应该将字段称为“order”,这里我选择了“priority”。

描述您所做的工作,不要只发布代码而不进行解释。我不明白。什么是(int)$id你能解释一下吗?黑客可以发送不是“1,2,3”,可能是“1”;删除表MyTable;,3”,然后删除你的数据表。(int)$variable-将变量转换为整数格式。如果发送字符串-在$variable=(int)$variable之后$变量自动转换为0欢迎使用SO。您提供的答案已标记为供审阅,因为它基本上只是代码。你能详细解释一下你的答案吗?解释一下,并说明它是如何解决OP问题的,以及为什么解决OP问题的?谢谢。感谢您提供详细信息(如上次查询),解释每个步骤并使其简单化。据我所知,这真的很有帮助。
SELECT * FROM items ORDER BY priority