按列值对HTML表进行排序

时间:2017-05-05 21:03:40

标签: javascript php html sorting html-table

我正在找人帮我解决这个问题:

我们有一个填充了用户排名的数据库,这些数据被拉出并放入一个表中(不能发布图像):

| Name: | Rank: | Claims: | Last Seen: |

| Test1 | Admin | 111 | Active Now | 
| Test2 | Moderator | 213 | Active Now | 
| Test3 | Senior Admin | 123 | Active Now |

IMAGE HERE

我们基本上希望对“排名”列进行排序,以便“高级管理员”排在第一位,“管理员”排在第二位,“主持人”排在最后。

我花了几个小时通过sql排序,php数组排序,javascript排序等方式查找排序表的方法,但无法找到任何不按字母顺序排序的内容。

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:1)

您可以使用SQL按照您希望的方式对其进行排序。我不知道你的SQL表的结构 - 所以我猜 - 这是使用MySQL的例子:

SELECT * FROM users
ORDER BY FIND_IN_SET(rank, 'Senior Admin,Admin,Moderator');

答案 1 :(得分:0)

PHP提供了一个名为usort的自定义排序函数。有关文档,请参阅here

它允许您使用自定义比较功能比较两个对象。 W3Schools has a good tutorial关于如何开始制作自己的比较功能。

usort函数有两个参数:您要排序的数组和自定义比较函数。例如,如果您有一个名为$results的结果数组,则可以像这样定义比较函数:

function my_compare($person1, $person2) {
    if($person["rank"] == $person2["rank"]) {
        return 0;
    }
    elseif($person1["rank"] == "Senior Admin") { // Senior admin will always be at the top
        return -1; 
    }
    elseif($person2["rank"] == "Senior Admin") {
        return 1;
    }
    elseif($person1["rank"] == "Admin" && $person2["rank"] == "Moderator") {
        return -1;
    }
    elseif($person1["rank"] == "Moderator" && $person2["rank"] == "Admin") {
        return 1;
    }
    else {
        return 0;
    }
}

然后,您可以通过调用usort($results, "my_compare");

来应用您的排序

答案 2 :(得分:0)

您还可以添加另一列,并为每个等级指定一个级别,然后按级别选择和排序。

SELECT * FROM `users` ORDER BY level

enter image description here

答案 3 :(得分:-1)

也许你应该考虑这个JQuery插件。它更容易集成,你可以做很多事情。 :)

http://datatables.net/index - 数据表。