如何在mysql中存储来自jquery-ui sortable的有序行

时间:2011-05-17 21:26:01

标签: mysql jquery-ui jquery-ui-sortable

我有一个像这样的项目列表

<ul id='lst'>
   <li id=123>first item</li>
   <li id=231>second item</li>
   <li id=321>third item</li>
</ul>

在jQuery中我将其排序:

$("#lst").sortable();

完成排序后,我会调用以下内容来获取用户放入项目的订单:

.sortable('toArray');

我使用AJAX将此数组发布到PHP脚本:

.post("store.php") {
   command: "storeitemorder",
   list: $("#lst").sortable("toArray") 
},function( data ) {},"json" );

这很好地将新订单传递给PHP,我得到了数组。现在问题是:我想将信息存储在MySQL数据库中,而不必对每个项目进行单独的查询。每个项目都有一行存储在数据库中。例如,它就像这样开始:

123 - first item
231 - second item
321 - third item

数字是项目所在的行。如果用户将第一项放在最后一个位置,我希望MySQL设置以下内容

first item (id=123), row=2
second item (id=231), row=1
third item (id=321), row=0

我可以做3个查询,但必须有一个更优雅的解决方案来做到这一点。此外,列表可能会比这更长,因为有很多用户我不想对每个列表项进行查询...

有人知道这方面的解决方案吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));

基本上你用implode转换数组

此处有更多详情:

insert multiple rows via a php array into mysql