用PHP排序表内容?

时间:2012-10-19 17:46:07

标签: php sorting

我有一张充满乐队列表的表格,供我们的Musician Finder计划使用。我们希望按类型对它们进行排序,同时仍然只有一个包含所有信息的.html或.php文件。

我怎么会开始这样做?最好使用php并避免使用JS,因为我们的大多数用户都有noscripts。 以下是测试页HERE的链接。任何建议都会很棒,甚至只是其他人做过的一个例子。
这是表on paste bin.

由于

此外,避免SQL是我老板的首要任务。

编辑:显然这在php中是不可行的。我愿意使用javascript。或者Jquery。如果这只是一个简单的表我会很好,但显然我的更详细,我不知道从哪里开始,并没有在谷歌上找到任何东西。如果有人想对此提出任何建议,那就太棒了但老实说没有人来这里读一下其他人不喜欢的事情我在stackoverflow问了一个问题。洛尔。

再次编辑:好的,所以我看起来更多......为什么我不能让我的所有<tr>的每个班级都有display:block; css,然后使用JS函数将除了正确的类之外的所有类更改为display:none;?这将非常简单。

4 个答案:

答案 0 :(得分:4)

@robert是正确的,因为你不能在不使用某些javascript的情况下对页面上的元素进行排序。因此,如果您想使用php对表进行排序,则必须首先将表的内容放入某种数据集中,如大型数组。根据我对你想要做的事情的理解,你桌子的每一行都属于你的一个可分类类别。因此,在定义数组时,您必须指定每行所属的类别,然后对该字段进行排序。

所以你的数组定义可能是这样的:

$master_array[] = array( 
    'category' => 'acoustic',
    'tr_html' => '<tr><td> .... </td></tr>'
);

然后在类别字段上对数组进行排序。一点谷歌搜索将帮助你。

然后在写表时,只需:

echo "<table>";
foreach( $master_array as $key => $val ) {
    echo $val["tr_html"];
}
echo "</table>";

希望这会有所帮助...

答案 1 :(得分:1)

如果在php中创建一个'Table'对象,具有$tbl = array(0 => $arr_row1, 1 => $arr_row2)等属性,那么您可以轻松创建一个视图方法,使用循环在html中呈现$ tbl。 (所有$ arr_rowx都是关联数组,其列名与键相同。)

然后,您可以使用此方法对字符串列键命令或反转$ tbl:

public function order($str_key_name, $bool_reverse = false) {
    $code = "return strnatcmp(\$a['$str_key_name'], \$b['$str_key_name']);";
    usort($this->tbl, create_function('$a,$b', $code));
    if ($bool_reverse) $this->tbl = array_reverse($this->tbl);
    return $this->tbl;
}

并在整数列上按顺序重新索引:

public function reIndex($str_index_name, $int_start_index = 0) {
    if ($this->tbl) {
        $num = count($this->tbl);
        for ($i = 0; $i < $num; $i++) 
            $this->tbl[$i][$str_index_name] = ($i + $int_start_index);
    }
    return $this->tbl;  
}

答案 2 :(得分:0)

在JavaScript中使用现有的表插件可能是最好的解决方案,因为它可以避免往返服务器以执行JavaScript可以轻松完成的操作。但是看到你说JavaScript不是你的第一选择,那么如果你选择将所有数据存储在PHP数组中,你就可以用PHP来实现。

因此,您首先将所有数据放入PHP数组中。然后编写一个函数,根据您希望的任何字段对数组进行排序。有许多排序算法可供选择。

以默认顺序显示数据表,并添加允许用户选择其他列进行排序的链接。在每个链接中,您可以设置要按以下方式排序的列的名称:

   <a href="mypage.php?sort=name">Sort By Name</a>

然后,您可以简单地使用参数“sort”来决定如何在将数组回显到HTML表格之前对其进行排序。

答案 3 :(得分:0)

我最终使用了jquery。任何没有JS的人都无法排序哈哈。谢谢你的建议。