使用PHP MySQL(向上/向下按钮)手动排序?
我正在尝试对表中的项目进行手动排序(排序) 不太擅长,而且似乎无法理解,因此希望得到一些帮助。 基本上有一个名为“sort”的列存储整数使用PHP MySQL(向上/向下按钮)手动排序?,php,mysql,Php,Mysql,我正在尝试对表中的项目进行手动排序(排序) 不太擅长,而且似乎无法理解,因此希望得到一些帮助。 基本上有一个名为“sort”的列存储整数 pid | pid | sort ----------+--------------+------- Alvin | 1001 | 1 Tom | 1002 | 2 Jerry | 1003 |
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
条件语句在函数中使用查询即可。谢谢!是的,我想我可以从中找到答案!