gpt4 book ai didi

php - 更新时的顺序表

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

我有下表,其中按优先级 ASC 排序

 ----------------------
|priority |activity |
|---------|-----------|
| 1 |act1 |
| 2 |act2 |
| 3 |act3 |
| 4 |act4 |
| 5 |act5 |
|---------|-----------|

我在其中进行更新的 JSON。

添加方法,但它没有按我的意愿工作

  <?php
//update.php
include_once('../include/conexion.php');

$query = "
UPDATE ACT_schedule SET ".$_POST["name"]." = '".$_POST["value"]."'
WHERE id_schedule = '".$_POST["pk"]."'";
$result=mysqli_query($conn, $query);

if ($result) {
$query2 = "UPDATE ACT_Agenda SET prioridad = CASE
WHEN prioridad >= " . $_POST['value'] . "
THEN prioridad + 1 ELSE prioridad END
WHERE id_agenda <> '" . $_POST['pk'] . "'";
mysqli_query($conn, $query2);
echo "YES";
} ?>

我想要做的是对优先级进行排序,如果我将优先级为 5 的 act5 更新为优先级 1,则优先级会发生变化,这意味着 act1 的优先级会改变code> 必须更改为 2,依此类推,直到 act4 更改为优先级 5。

如果我更新最后一个优先级,效果会很好。但是,如果我将 act4 更新为优先级 1,则以下内容不应更新,但它们会通过添加 +1 来更新(act5 优先级 5 为 6)。

如果我将 act4 更新为优先级 1,我希望得到类似的结果

   ----------------------
|priority |activity |
|---------|-----------|
| 1 |act4 |
| 2 |act1 |
| 3 |act2 |
| 4 |act3 |
| 5 |act5 |
|---------|-----------|

我希望我解释得很好。问候。

最佳答案

从您的代码来看,并不能 100% 清楚哪些是在更新查询中使用的适当的 $_POST 变量,所以这里是一个纯粹的 MySQL 解决方案。首先创建演示表:

CREATE TABLE agenda (`priority` int, `activity` varchar(4)); 
INSERT INTO agenda (`priority`, `activity`)
VALUES (1, 'act1'), (2, 'act2'), (3, 'act3'), (4, 'act4'), (5, 'act5');
SELECT * FROM agenda ORDER BY priority;

输出:

priority    activity
1 act1
2 act2
3 act3
4 act4
5 act5

要更新,请使用以下查询。我使用变量 @n 作为新的优先级,使用 @a 作为要修改的事件;在您的 PHP 代码中,您将删除下面的 SET 语句,并将更新查询中的 @n@p 替换为相应的 $ _POST 值。在此示例中,我将 act4 切换到优先级 2:

SET @a = 'act4';
SET @n = 2;
UPDATE agenda SET priority = CASE WHEN priority BETWEEN @n AND (SELECT * FROM (SELECT priority FROM agenda WHERE activity=@a) a) AND activity != @a THEN priority + 1
WHEN activity = @a THEN @n
ELSE priority
END;

现在我们可以查看修改后的表:

SELECT * FROM agenda ORDER BY priority;

输出:

priority    activity
1 act1
2 act4
3 act2
4 act3
5 act5

SQLFiddle Demo

关于php - 更新时的顺序表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52189679/

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