如何使用名称值以升序和降序对表值进行排序,而不使用PHP中的sort()函数或SQL中的ORDER BY?

时间:2014-08-06 17:39:16

标签: php mysql ajax

我使用以下代码来获取我的结果表,我需要根据我的名称值分别单击“升序”或“降序”按钮对此表进行排序。 如何为此创建自定义php功能?任何帮助将不胜感激。

<?php
require('config.php');
$sql_sel = "select * from contact";
$res_sel = mysql_query($sql_sel);
?>
<table><tr><td>Name </td><td>Email </td><td> Mobile</td><td>Web </td></tr>
<tr>
<?php
    while($row_sel = myqsl_fetch_array($res_sel)){
        $name = $row_sel['name'];
        $email = $row_sel['email'];
        $mobile $row_sel['mobile'];
        $web =$row_sel['web'];
        echo "<td>".$name."</td>";
        echo "<td>".$email."</td>";
        echo "<td>".$mobile."</td>";
        echo "<td>".$web."</td></tr>";

    }
?>
</table>

<input type="button" value="Ascending" onclick="ascending()">
<input type="button" value="Descending" onclick="descending()">

我从表中获取数据库表中的值,如执行顺序。 我的页面有两个按钮Ascending和Descending,在点击它时,它会根据名称值生成以升序和降序排列的表值。我应该用'ascending()'和'descending()'代码来实现这个目标?我需要将它作为一个自定义的php函数吗?

1 个答案:

答案 0 :(得分:0)

我们假设您传递了一个名为&#34; sort&#34;的值。它可以是&#34; dsc&#34;用于降序,以及其他任何(或未指定)升序。

首先,从解析值开始:

$sortMode = 'ASC';
if (array_key_exists('sort', $_REQUEST)) {
    if ($_REQUEST['sort'] == 'dsc') {
        $sortMode = 'DESC'
    }
}

稍后,当您创建查询时:

$sql_sel = "select * from contact order by name $sortMode";

这将导致数据库按正确的方向排序。

需要注意的一件重要事情是,永远不会将用户输入(例如$ _GET,$ _POST等)直接传递到您的SQL字符串中,这样您就不会暴露自己到SQL injection attacks。注意,这里我们测试$ _REQUEST参数并手动设置实际的PHP变量以避免这种情况。

在生产应用程序中,您应尽可能使用parameter binding(此处不相关,因为ASC / DESC是语句的一部分,而不是参数)。