Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按列值排序HTML表_Javascript_Php_Html_Sorting_Html Table - Fatal编程技术网

Javascript 按列值排序HTML表

Javascript 按列值排序HTML表,javascript,php,html,sorting,html-table,Javascript,Php,Html,Sorting,Html Table,我正在找人帮我解决这个问题: 我们有一个充满用户等级的数据库,这些数据被拉入一个类似这样的表中(不能发布图像): 我们基本上希望对“排名”列进行排序,以便“高级管理员”排在第一,“管理员”排在第二,“版主”排在最后 我花了数小时寻找通过sql排序、php数组排序、javascript排序等方式对表进行排序的方法,但找不到任何不按字母顺序排序的方法 非常感谢您的帮助

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

我们有一个充满用户等级的数据库,这些数据被拉入一个类似这样的表中(不能发布图像):

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

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


非常感谢您的帮助
-数据表

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

它允许您使用自定义比较函数比较两个对象。关于如何开始制作自己的比较函数

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”)应用排序

您可以使用SQL按自己喜欢的方式对其进行排序。我不知道SQL表的结构——所以我猜——下面是使用MySQL的示例:

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

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

SELECT * FROM `users` ORDER BY level

如何生成表格的html?在不知道这一点的情况下很难找到答案。您可以按该列对数组进行排序,然后打印html。实际上,这是一个非常简单的解决方案。您遇到了什么问题?请确保您的数据库会对这些数据进行排序。您使用哪一个数据库?您应该自己尝试编写代码。如果您有问题,请发布您尝试过的内容,并清楚解释哪些内容不起作用,然后提供。读一个好问题。请务必阅读和阅读。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。虽然此链接可能会回答问题,但您最好带上您的专业知识来帮助解决此问题。可能的答案太多,或者好的答案对于此格式来说太长。我们通常不会回答过于宽泛的问题,当然也不会用仅链接的答案来回答。@JayBlanchard进行了编辑,以增加答案的清晰度,并添加了一些示例代码。
SELECT * FROM `users` ORDER BY level