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

时间:2014-04-08 16:08:36

标签: php mysql

我正在尝试对表格中的项目进行手动排序(排序) 不太擅长它,似乎无法弄明白,所以想得到一些帮助。 基本上有一个名为' 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"重新排序

非常感谢!

2 个答案:

答案 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/

在服务器端对元素进行排序可能是一场噩梦,特别是如果你有很多元素,并希望从顶部到底部或从底部到顶部移动一个元素。