0

我有一个少于一千行的 MySQL 表,它是由 PHP 脚本获取的。我希望能够tbody在单击链接时按 ASC 或 DESC 顺序排序,并且仍然能够像这里演示中那样使用搜索栏。但是,当我尝试将编码合并到我的 PHP 生成表中时,我的搜索栏没有过滤。我一定做错了什么。

这是我的 PHP 脚本:

$result = mysql_query("SELECT * FROM table_name");
while ($row = mysql_fetch_array($result)) {
   echo "<tr>";
   echo "<td>".$row['fruits']."</td>";
   echo "<td>".$row['colors']."</td>";
   echo "</tr>";
}
mysql_close();

如果可能的话,我想有一些提示、片段甚至示例会很棒!

谢谢

4

2 回答 2

0

我对两个 JSFiddle 版本都进行了一些尝试,并找到了一个有效的搜索和排序解决方案,它还将对搜索结果进行排序。唯一的缺点是排序会排序大写而不是小写。

ABC ... Z abc ... z


var $rows = $('#table tbody tr');
$('#search').keyup(function () {
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();

    $rows.show().filter(function () {
        var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
        return !~text.indexOf(val);
    }).hide();
});

function compare(a,b) {
    var val1= $(a).find('td').text();
    var val2= $(b).find('td').text();

    if (val1 < val2)
        return -1;
    if (val1 > val2)
        return 1;
    return 0;
}

$('#sort').click(function(){


    $('#table').html($('#table tr').sort(compare));

});

http://jsfiddle.net/QxNmJ/3/

来自德国的问候


KS_HTK

于 2015-03-04T17:56:05.600 回答
0

PHP 解决方案:

    <?php
    $sort_name = "id";
    $sort_type = "asc";

    if($_GET['sort'] == "fruits")
       $sort_name = "fruits_column_name";
    else if($_GET['sort'] == "colors")
       $sort_name = "colors_column_name";
    if($_GET['sort_type'] == "desc")
       $sort_type = "desc";

    $sql = "SELECT * from mytable where some conditions ORDERBY " . $sort_name . " " . $sort_type;
    //run your query;



    //later in ur HTML
    <tr>
        <th><a href="?sort=fruits&sort_type=<?= ($sort_name=='fruits' && $sort_type=='asc')?'desc':'asc' ?>">Fruits</a></th>
        <th><a href="?sort=colors&sort_type=<?= ($sort_name=='colors' && $sort_type=='asc')?'desc':'asc' ?>">Colors</a></th>
    </tr>

jQuery解决方案:

http://jsfiddle.net/QxNmJ/

Javascript库解决方案:

使用这个库https://datatables.net/非常方便,它将为您提供您正在寻找的一切。

于 2013-08-25T05:23:02.683 回答