Php 对组内的行重新排序
我正在为一个有很多图片库的网站制作一个管理系统。该界面将允许用户在每个图库中添加、删除或重新排序图像 我有一个表格,用于存放所有库中的所有图像,“id”自动递增,默认排序顺序设置为0Php 对组内的行重新排序,php,mysql,ajax,Php,Mysql,Ajax,我正在为一个有很多图片库的网站制作一个管理系统。该界面将允许用户在每个图库中添加、删除或重新排序图像 我有一个表格,用于存放所有库中的所有图像,“id”自动递增,默认排序顺序设置为0 +----+-----------+------------+------------+ | id |gallery_id | sort_order | +----+-----------+------------+------------+ | 1 | 1 | 1 | | 2
+----+-----------+------------+------------+
| id |gallery_id | sort_order |
+----+-----------+------------+------------+
| 1 | 1 | 1 |
| 2 | 1 | 0 |
| 3 | 1 | 2 |
| 4 | 1 | 3 |
| 5 | 1 | 4 |
| 6 | 1 | 5 |
| 7 | 1 | 6 |
| 8 | 2 | 0 |
| 9 | 2 | 1 |
| 10 | 2 | 2 |
| 11 | 2 | 3 |
| 12 | 2 | 4 |
| 13 | 2 | 5 |
| 14 | 2 | 6 |
+----+-----------+------------+------------+
以下是通过ajax使用序列化数组进行的重新排序查询:
if($_POST['item']) {
$order = 0;
foreach ($_POST['item'] as $id) {
$rearrange = $db->query
("UPDATE images SET sort_order = '".$order."' WHERE id = '".$id."'");
$order++;
它根据传递的数组的长度限制排序顺序,然后对其所属的下一个组默认为0。我可以重新排序、添加、删除,并且它始终限制对我正在编辑的库id组的更改
(作为实验,我在所有库中插入了按升序排列的排序顺序值,如下所示:
+----+-----------+------------+------------+
| id |gallery_id | sort_order |
+----+-----------+------------+------------+
| 1 | 1 | 0 |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 1 | 4 |
| 5 | 1 | 5 |
| 6 | 1 | 6 |
| 7 | 1 | 7 |
| 8 | 2 | 8 |
| 9 | 2 | 9 |
| 10 | 2 | 10 |
| 11 | 2 | 11 |
| 12 | 2 | 12 |
| 13 | 2 | 13 |
| 14 | 2 | 14 |
+----+-----------+------------+------------+
当我使用我的界面对行重新排序时,它限制了库id组中的排序顺序,正如第一个表所示)
我正在寻找这种方法的注意事项。有人这样做吗 我也是这样做的,但我实际上是通过计算每个库中的行数将插入的图像放在最后。当用户想要订购时,他必须先过滤特定库的列表,然后才能对库中的图像进行排序
UPDATE images
SET
sort_order = FIELD(id, A, B, C, D, E)
WHERE gallery_id = N
AND id IN(A, B, C, D, E)
我不得不指出你的代码存在严重的安全问题。我真的,真的,真的希望你不是真的这样写查询,因为任何人都可以轻松地用你的数据库做任何他们想做的事情
我想到了。如果我提交一个类似
0'的项目;拖放表图像代码>您的整张桌子都不见了。谢谢您的建议。我确实对一切都进行了消毒。我可以问一下,在重新排序之前,您如何筛选特定库的列表?我使用一个框架,它向我显示带有筛选选项的列表,其中一个过滤器是gallery_id。在对特定库进行筛选之前,我不允许他们进行排序。