gpt4 book ai didi

php - 如何在表中添加新条目并更改其他条目的排序顺序

转载 作者:行者123 更新时间:2023-11-29 00:31:45 24 4
gpt4 key购买 nike

我正在创建一个论坛应用程序,并且我有一个存储类别的表。该表有 3 列:

Category_Id | Category_Name | CategoryOrder

我有一个 PHP 脚本,可以向数据库添加一个新类别,它包括选择类别显示的顺序。因此,例如,如果我在数据库中存储了 5 个类别,并且我想添加一个新类别并使其成为 CategoryOrder 列中的第一类别,这意味着 CategoryOrder 的其他类别将不得不改变。

如果表中只有一个类别,我只需将其更新为一个新值并将 1 值分配给新类别。但是如果我有五行我该怎么办。我如何更改所有这些以将 1 添加到它们的当前值?我不知道我在这里是否有道理。

最佳答案

我做了几次。我现在找不到任何代码,所以我将只发布一个算法(其中可能包含一些伪代码):

  1. 插入一个新值(更简单的值):
    • 更新所有具有CategoryOrder的类别与新插入的更大或相同: UPDATE Categories SET CategoryOrder = CategoryOrder + 1 WHERE CategoryOrder >= $newCategory['order'];
    • 插入您的新类别
  2. 更新现有类别:
    • 检查新订单是否比原来大或小(如果相同则无需执行任何操作...)
    • 如果它更大,更新所有具有CategoryOrder的类别比旧订单大,比新订单小,然后减 1: UPDATE Categories SET CategoryOrder = CategoryOrder - 1 WHERE CategoryOrder > $category['old_order'] AND CategoryOrder <= $category['new_order']; - 通过这个你填补了空白
    • 如果较小,则与较大时类似,但对具有CategoryOrder >= new_order 的类别加1和 CategoryOrder < new_order

应该是这样。

编辑:对第二种情况的解释(更新):

假设我们有这些条目:

Category_Id | Category_Name | CategoryOrder
1 | name_1 | 1
2 | name_2 | 2
3 | name_3 | 3
4 | name_4 | 4
5 | name_5 | 5

现在我们要编辑订单类别2并将其更改为 4 .我们要做的是用命令3来制作类别。和 4下降一个:

Category_Id | Category_Name | CategoryOrder
1 | name_1 | 1
2 | name_2 | 2
3 | name_3 | 2
4 | name_4 | 3
5 | name_5 | 5

最后更新所需的类别,并将其排序为 4 :

Category_Id | Category_Name | CategoryOrder
1 | name_1 | 1
3 | name_3 | 2
4 | name_4 | 3
2 | name_2 | 4
5 | name_5 | 5

现在清楚了吗?

现在如果我们想用订单更改类别怎么办 5成为第一个?更新所有顺序 >= 1 的类别和 5 < 并将顺序设置为 +1 :

Category_Id | Category_Name | CategoryOrder
1 | name_1 | 2
3 | name_3 | 3
4 | name_4 | 4
2 | name_2 | 5
5 | name_5 | 5

最后更新所需的类别:

Category_Id | Category_Name | CategoryOrder
5 | name_5 | 1
1 | name_1 | 2
3 | name_3 | 3
4 | name_4 | 4
2 | name_2 | 5

(注意类别是按顺序和 ID 排序的)

关于php - 如何在表中添加新条目并更改其他条目的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com