我有一个像这样的项目清单
<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个查询,但是必须有一个更优雅的解决方案来做到这一点。而且,列表的长度可能比这更长,并且由于有很多用户,我不想对每个列表项进行查询...
有人知道解决方案吗?
最佳答案
尝试这个:
$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));
基本上,您可以使用爆破转换数组
此处有更多详细信息:
insert multiple rows via a php array into mysql
关于mysql - 如何从可排序的mysql中的jquery-ui存储有序行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037340/