php - 如何更改列表的顺序?

标签 php mysql arrays loops

我正在使用 PHP/MySQL 但只是在寻找伪代码

如何允许用户更改项目列表的显示顺序?

假设用户将 #4 移动到 #1,我是否将 #4 更改为 #0,然后将每个行 (1-3) 加 1,使其变为 2-4,然后将 #0 更改为 #1?

这是最好的方法吗?

更新:这是一个待办事项列表,我不会只是交换项目的顺序(即交换#1和#4,而是将项目移到其他项目的前面)

我在 SQL 数据库中拥有包含 item_id、task、completed、order_id 的项目

我需要更改 order_id

最佳答案

我认为你已经说对了:

UPDATE items SET order_id = 0 WHERE order_id = 4;
UPDATE items SET order_id = order_id + 1 WHERE  order_id >= 1 AND order_id < 4;
UPDATE items SET order_id = 1 WHERE order_id = 0;

要将 order_id i 的项目移动到位置 j (i > j):

UPDATE items SET order_id = 0 WHERE order_id = i;
UPDATE items SET order_id = order_id + 1 WHERE  order_id >= j AND order_id < i;
UPDATE items SET order_id = j WHERE order_id = 0;

要将 order_id i 的项目向下移动到位置 j (j > i):

UPDATE items SET order_id = 0 WHERE order_id = i;
UPDATE items SET order_id = order_id - 1 WHERE  order_id > i AND order_id <= j;
UPDATE items SET order_id = j WHERE order_id = 0;

另一个选择是添加previous_sibling。假设您已经加载了列表,因此您知道前面的同级为 [1 => null, 2 => 1, 3 => 2, 4 => 3, 5 => 4]:

UPDATE items SET previous_sibling = 3 WHERE id = 5; #previous_sibling of 4
UPDATE items SET previous_sibling = null WHERE id = 4; # previous_sibling of 1
UPDATE items SET previous_sibling = 4 WHERE id = 1;

关于php - 如何更改列表的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598265/

相关文章:

php - php 中的 get_result() 和 store_result() 有什么区别?

mysql - Confluence kafka jdbc 连接查询方式

php - MySQL 数据库 I18N,一种 JSON 方法?

javascript - 使用 if 语句添加对象属性

java - 在不同平台上字节到字符串的转换,反之亦然

c - 如何将一个变量的字符串分配给另一个变量?

php - 可以订阅 channel 的 Node.js 或 PHP 的 Pusher 库?

php - 获取准备好的mysql语句的结果

php - Parse error : syntax error, unexpected end of file on line(在其他帖子中找不到解决方案)

mysql - 将 IF ELSE 更改为 CASE