通过单击php网页中的列标题对列进行排序

时间:2013-09-14 06:30:22

标签: php jquery sorting html-table multiple-columns

我有一个页面,其中有一个按钮,用于点击并使用jquery显示表中数据库的所有数据。我需要通过单击列标题对表进行排序。问题是,我有,表的填充方式。看到代码。我有填充它的PHP代码。列是ID,许可证等。所以我需要根据列对其进行排序。

<?php

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $query = "
        my query from database to display all the values
                                ";
                        $result= $dbh->prepare($query,array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
                        $result->execute();

                        echo "<table id='abc' class='abcd' width='100%'><tr>"
                            . "<th id='mydata' class='myd' onclick='loadOrderedData(myd)'>ABC</th>"
                            . "<th>DEF</th>"
                            .......
                            . "</tr>";

                        while($data=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_NEXT))
                        {
                            echo "<tr>"
                                . "<td>" . $data['ABC'] . "</td>"
                                . "<td>" . $data['DEF'] . "</td>"
                                .......
                                . "</tr>";

                        }

                        echo "</table>";
                    ?>

它显示在最初隐藏的div中,然后使用jquery在取消数据的按钮单击中取消隐藏。请帮助我找到可行的解决方案。

我尝试制作<a href="#" >并使用onclick方法。它不起作用,可能是由于它如何填充数据。

1 个答案:

答案 0 :(得分:0)

与评论中的操作问题有关... 使用order by ...的示例查询。

 SELECT * FROM `my_table` ORDER BY `price` ASC 

....这将返回按价格列中的值排序的结果。使用ajax你可以使用jQuerys .load函数。并使用get变量传递url,以便对哪个列进行排序, 你需要给你的&lt; tr>一个id,ill调用id'数据',你将点击的列将有一个onclick =“loadOrderedData(columnName)”属性调用加载函数,如...

function loadOrderedData(orderBy){
 $('#data').load('aPhpPageThatReturnsData.php?orderBy='+orderBy);
}

所以在被调用的文件中查询可能看起来像

SELECT * FROM `my_table` ORDER BY `$_GET['orderBy']` ASC 
//code to create new html for your data <tr> using sorted data

希望这会有所帮助。 更新....

$result->execute();
?>
<table id='abc' class='abcd' width='100%'>
    <tr>
        <th class='myd' onclick='loadOrderedData("myd")'>ABC</th>
        <th>DEF</th>
     </tr>
      <tr>
          <td colspan="2">
             <table id="myData">
    <?php
while($data=$result->fetch(PDO::FETCH_ASSOC,PDO::FETCH_ORI_NEXT))
{ ?>
                <tr>
                   <td><?=$data['ABC']?></td>
                   <td><?=$data['DEF']?></td>
                </tr>
<?php
} ?>
         </table>
      </td>
    </tr>
 </table>