更改数据库记录排序顺序以使用PHP

时间:2015-06-03 22:25:15

标签: php mysql sorting

我有一个项目管理PHP / MySQL / JavaScript应用程序,其项目任务列表具有任务记录

Tak列表名称/标题只不过是一个带有数据库列的任务记录,表明它将用作标题/列表名称,然后可以根据在单独的任务列表下组织任务记录排序订单数据库列

因此,基于下面的演示,其中包含 17个任务记录 3个任务列表记录

ID  | TASK NAME          | Sort Order
01  | - Task list 1      | 1
02  | --- task item 1    | 2
03  | --- task item 2    | 3
04  | --- task item 3    | 4
05  | --- task item 4    | 5
06  | --- task item 5    | 6
07  | - Task list 2      | 7
08  | --- task item 6    | 8
09  | --- task item 7    | 9
10  | --- task item 8    | 10
11  | --- task item 9    | 11
12  | --- task item 10   | 12
13  | - Task list 3      | 13
14  | --- task item 11   | 14
15  | --- task item 12   | 15
16  | --- task item 13   | 16
17  | --- task item 14   | 17
18  | --- task item 15   | 18

因此,请考虑我要更新task item 13 ID = 16sort order 16的情况并更新其排序顺序,以便"移动"任务记录到Task List 1

我想有一个简单易用的PHP函数来完成将任务记录移动到新排序顺序的这种类型的工作,以便它显示在新的任务列表下,如下所示:

/**
 * Move Task record to new Task List by ID
 * $taskId int Task ID number
 * $taskListId int Task List record ID number
 */
$task->moveTaskIdToListId($taskId, $taskListId);

我很感激您的帮助,因为我不确定该怎么做?

经过一番思考后,我认为这可能涉及......

完成将任务记录移至新列表的可能步骤

  1. task item 13从列表3移至列表1.查询数据库并获取我们要移动到的下一个列表的排序顺序值。因此,获取列表2的排序顺序为7。
  2. 现在从列表2的排序顺序中减去-1,这为我们提供了task item 13排序顺序必须更改为的数字,以便将其移至list 1
  3. 现在task item 13Task list 2 record的排序顺序为7
  4. 因此,从Task list 2记录开始及其后的所有记录,需要增加排序顺序编号+1
  5. 有关如何执行此操作的任何建议,请按照我上面的步骤听到有关这样做的权利吗? AGain我意识到这不是最好的结构,但我试图让它在现有系统上运行

1 个答案:

答案 0 :(得分:0)

我想这可行,但我想我会为“排序顺序”添加一列,而不是弄乱ID:o并假设你使用PDO作为$ this-> db - 我认为诀窍是给newid的当前所有者,临时id,然后将oldid移动到newid,然后将tempid移动到oldid

git l