Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 MySQL(向上/向下按钮)手动排序?_Php_Mysql - Fatal编程技术网

使用PHP MySQL(向上/向下按钮)手动排序?

使用PHP MySQL(向上/向下按钮)手动排序?,php,mysql,Php,Mysql,我正在尝试对表中的项目进行手动排序(排序) 不太擅长,而且似乎无法理解,因此希望得到一些帮助。 基本上有一个名为“sort”的列存储整数 pid | pid | sort ----------+--------------+------- Alvin | 1001 | 1 Tom | 1002 | 2 Jerry | 1003 |

我正在尝试对表中的项目进行手动排序(排序) 不太擅长,而且似乎无法理解,因此希望得到一些帮助。 基本上有一个名为“sort”的列存储整数

    pid       |    pid       |   sort
    ----------+--------------+-------
    Alvin     |     1001     |    1
    Tom       |     1002     |    2
    Jerry     |     1003     |    3
我需要代码的帮助来重新定位行。。。i、 我使用php通过URL sort.php?do=up&pid=1002&sort=2解析变量

单击顶部的“向上”将导致Tom变为1,Alvin降为2

然后期望的结果是排序现在将更改为

    pid       |    pid       |   sort
    ----------+--------------+-------
    Alvin     |     1001     |    2
    Tom       |     1002     |    1
    Jerry     |     1003     |    3
我还想知道与此相反的是“向下”重新排序


非常感谢

考虑为此使用jQuery Sortable:


在服务器端对元素进行排序可能是一场噩梦,特别是如果您有许多元素,并且希望将其中一个从上到下或从下到上移动。

还没有测试过这一点,但您会明白我的意思:

$pid = (int) $_GET['pid'];
$sort = (int) $_GET['sort'];

$update_pid = false;
if ($_GET['do'] == 'UP') {
    $update_pid = '-';
    $update_other = '+';
    $sort_other = $sort - 1;
} elseif ($_GET['do'] == 'DOWN') {
    $update_pid = '+';
    $update_other = '-';
    $sort_other = $sort + 1;
}

if ($update_pid) {
    $query_one = "
        UPDATE table 
        SET sort = sort " . $update_other ." 1 
        WHERE sort = " . $sort_other;
    $query_two = "
        UPDATE table 
        SET sort = sort " . $update_pid ." 1 
        WHERE pid = " . $pid;
}

如果顺序相反,您可以相应地更改If语句。

谢谢,您已经看到了这个选项,但是如果可能的话,您希望通过SQL编码了解好的旧方法。这实际上是坏的旧方法:)另外,使用jQuery Sortable,您还需要更新数据库。这将更加方便用户,因为订购过程将在客户端执行,并且在保存时只处理一个请求。使用
按列排序ASC
按列排序DESC
,这将为您提供一个上下排序顺序。然后使用
isset
条件语句在函数中使用查询即可。谢谢!是的,我想我可以从中找到答案!