按列值对 HTML 表进行排序

问题描述 投票:0回答:4

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

我们有一个充满用户排名的数据库,这些数据被提取并放入表格中,如下所示(无法发布图像):

姓名: 排名: 索赔: 最后出现:
测试1 管理员 111 现在活跃
测试2 主持人 213 现在活跃
测试3 高级管理员 123 现在活跃

IMAGE HERE

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

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

非常感谢任何帮助!

javascript php html sorting html-table
4个回答
1
投票

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

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

0
投票

PHP 提供了一个名为

usort
的自定义排序函数。请参阅此处了解文档。

它允许您使用自定义比较函数来比较两个对象。 W3Schools 有一个很好的教程,介绍如何开始制作自己的比较函数。

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");

来应用排序

0
投票

您还可以添加另一列,并为每个排名分配一个级别,然后按级别进行选择和排序。

SELECT * FROM `users` ORDER BY level


-1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.