Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 像在待办事项列表中一样存储订单信息(我有两个选项)_Php_Mysql_Sql - Fatal编程技术网

Php 像在待办事项列表中一样存储订单信息(我有两个选项)

Php 像在待办事项列表中一样存储订单信息(我有两个选项),php,mysql,sql,Php,Mysql,Sql,我有一个类似于待办事项列表的项目列表,需要按特定顺序呈现。此订单可能会更改,并且可能会在任何位置添加新项目并删除项目。我正在尝试确定什么是存储这些项目顺序的好方法,以便于更新列表和显示数据 我可以在每个项目的字段中存储订单信息。这样就很容易按该字段对项目进行排序。但问题是,如果我想在列表顶部添加一个新项目,我必须修改该列表中的所有其他项目如果我有50个待办事项,那么我必须修改50条记录 另一个选项是在todo列表对象本身中存储项目的顺序。所以我将订单存储为字符串23,45,34100。如果顺序更

我有一个类似于待办事项列表的项目列表,需要按特定顺序呈现。此订单可能会更改,并且可能会在任何位置添加新项目并删除项目。我正在尝试确定什么是存储这些项目顺序的好方法,以便于更新列表和显示数据

我可以在每个项目的字段中存储订单信息。这样就很容易按该字段对项目进行排序。但问题是,如果我想在列表顶部添加一个新项目,我必须修改该列表中的所有其他项目如果我有50个待办事项,那么我必须修改50条记录

另一个选项是在todo列表对象本身中存储项目的顺序。所以我将订单存储为字符串23,45,34100。如果顺序更改,我只需更改todo list对象中的1字段。问题是要展示这些商品,我不能简单地让他们订购。在从数据库中检索项目之后,我必须找到一种基于该订单字符串对项目进行排序的方法

那么,关于存储订单位的好方法有什么建议吗?我有这两种选择,但我对其他方式持开放态度。我正在寻找一些东西,使它很容易提出的数据,但不会太难更新的顺序时,它的变化

Sample data

id     value     order 
----------------------
1      item 5    5    
2      item 1    1
3      item 4    4
4      item 2    2
5      item 3    3 

output
------ 
item 1 (id 2)
item 2 (id 4)
item 3 (id 5)
item 4 (id 3)
item 5 (id 1)

可以使用关联数组,但可以使用uniquid生成键

您应该将一个ID存储为每个可能使用uniqid生成的项的一部分,并按照这些ID的排序顺序保留这些ID的数组。然后将订单作为ID数组保存

更改排序数组的顺序,即更改输出的顺序。根据排序数组输出值非常容易

$values = array(
    '4f7684747c784' => array( ... ),
    '4f76846f0561c' => array( ... ),
    '4f76847aa7759' => array( ... ),
);

$sort = array('4f76846f0561c', '4f7684747c784', '4f76847aa7759');

foreach($sort as $key) {
    // do something with $values[$key]
}

你能发布一些示例数据和所需的o/P吗?虽然更新时间会更长,但我认为你的第一种方法更有意义。将order作为数据库中的一个字段保存,这样您就可以轻松地查询所需的信息。如果有变化,PHP只需循环/更新顺序。@mikevoermans我关心的不是PHP,而是数据库本身。要更新,根据列表的长度,我必须点击数据库50次或更多次。这让我有点担心。这个规模有多大?本周早些时候,我正在处理一个数据库,在该数据库上运行了250000个查询。我还知道数据库中一些最常用的CMSE存储顺序字段,用于导航或层次结构。这只是一种惯例。
$values = array(
    '4f7684747c784' => array( ... ),
    '4f76846f0561c' => array( ... ),
    '4f76847aa7759' => array( ... ),
);

$sort = array('4f76846f0561c', '4f7684747c784', '4f76847aa7759');

foreach($sort as $key) {
    // do something with $values[$key]
}