我在一个页面上有一堆照片并使用 jQuery UI 的 Sortable 插件,以允许对它们进行重新排序。
当我的可排序函数触发时,它会写入一个新的顺序序列:
1030:0,1031:1,1032:2,1040:3,1033:4
逗号分隔字符串的每个项目,由照片 ID 和订单位置组成,以冒号分隔。当用户完全完成重新排序后,我将通过 AJAX 将此订单序列发布到 PHP 页面,以将更改存储在数据库中。这就是我遇到麻烦的地方。
我让我的脚本正常工作没有问题,但我很确定这是实现我想要的不正确的方法,并且会在性能和资源方面遭受巨大损失 - 我希望有人能告诉我什么是最好的方法。
这是我处理序列的 PHP 脚本:
if ($sorted_order) {
$exploded_order = explode(',',$sorted_order);
foreach ($exploded_order as $order_part) {
$exploded_part = explode(':',$order_part);
$part_count = 0;
foreach ($exploded_part as $part) {
$part_count++;
if ($part_count == 1) {
$photo_id = $part;
} elseif ($part_count == 2) {
$order = $part;
}
$SQL = "UPDATE article_photos ";
$SQL .= "SET order_pos = :order_pos ";
$SQL .= "WHERE photo_id = :photo_id;";
... rest of PDO stuff ...
}
}
}
我的担忧来自嵌套foreach
函数以及运行如此多的数据库更新。如果给定的序列包含 150 个项目,这个脚本会寻求帮助吗?如果会,我该如何改进它?
** 这是一个管理页面,所以它不会被严重滥用 **