我有一个像这样的项目列表
<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个查询,但必须有一个更优雅的解决方案来做到这一点。此外,列表可能会比这更长,因为有很多用户我不想对每个列表项进行查询...
有人知道这方面的解决方案吗?
答案 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转换数组
此处有更多详情: