我正在尝试对表格中的项目进行手动排序(排序) 不太擅长它,似乎无法弄明白,所以想得到一些帮助。 基本上有一个名为' sort'存储整数,
pid | pid | sort
----------+--------------+-------
Alvin | 1001 | 1
Tom | 1002 | 2
Jerry | 1003 | 3
我需要帮助代码重新定位行...即我使用php通过URL sort.php解析变量?do = up& pid = 1002& sort = 2
点击" UP"在顶部将导致汤姆成为1,而阿尔文下降到2
然后,期望的结果将是排序现在将变为
pid | pid | sort
----------+--------------+-------
Alvin | 1001 | 2
Tom | 1002 | 1
Jerry | 1003 | 3
还想知道这是一个" DOWN"重新排序
非常感谢!
答案 0 :(得分:2)
没有测试过这个,但是你会发现我的漂移:
$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语句。
答案 1 :(得分:0)
考虑使用jQuery Sortable:https://jqueryui.com/sortable/
在服务器端对元素进行排序可能是一场噩梦,特别是如果你有很多元素,并希望从顶部到底部或从底部到顶部移动一个元素。