按XXX排序ASC或DESC,动态排序,mysql ......

时间:2011-08-24 17:25:06

标签: php mysql html5

这更像是一个查询而不是一个问题。我想为我的mysql数据库结果创建动态排序。我目前用查询输出结果。我想创建一个2链接,它将按所选链接对结果进行排序,再次单击并链接ASC或DSEC结果。

我一直在寻找,但无法找到正确的方法。

我甚至下载了一个框架,看看这是如何完成的,但没有成功。 示例如下:

TITLE TOTAL

这听起来很简单,我无法在网上找到动态的例子。

其他人发现谷歌提供的结果比过时的实用网页有更多的过时和论坛? 即使你按去年和相关性排序。希望有人能给我一些建议,谢谢

4 个答案:

答案 0 :(得分:4)

<?php

    $order = ($_GET['order'] == 'asc') ? 'asc' : 'desc';

    $sql = "SELECT .... FROM ... WHERE ... ORDER BY TITLE $order";
    mysql_query($sql) or die(mysql_error());
    ...

     $new_order = ($order == 'asc' ) ? 'desc' : 'asc';
?>

<table>
<thead><tr>
    <th><a href="scriptname.php?order=<?php echo $new_order ?>">TITLE</a></th>
    <th>Total</th>
</tr></thead>
etc....

答案 1 :(得分:3)

<?php
    // build the basis for the query
    $sql = '
        SELECT 
            `id`,
            `title`,
            `total`
        FROM 
            `my_table`
    ';

    // check for sort field
    $sort_by = isset($_GET['s']) ? $_GET['s'] : false;
    // validate the sort field (avoid Bobby Tables!) and provide default
    switch ($sort_by) {
        case 'title':
        case 'id':
        case 'total':
            break;
        default:
            $sort_by = 'id';
    }

    $sql .= ' ORDER BY '.$sort_by.' ';

    // get the direction, or use the default
    $direction = isset($_GET['d']) ? $_GET['d'] : false;
    if ($direction != 'ASC' && $direction != 'DESC')
        $direction = 'DESC';
    $sql .= $direction;

    // execute query, get results
    $res = mysql_query($sql);
    $results = array();
    if ($res) {
        while ($r = mysql_fetch_assoc($res)) {
            $results[] = $r;
        }
    }

    // used in table heading to indicate sort direciton
    $sort_arrow = ($direction == 'ASC' ? '<img src="up_arrow.png" />' : '<img src="down_arrow.png" />');

    // used to build urls to reverse the current sort direction
    $reverse_direction = ($direction == 'DESC' ? 'ASC' : 'DESC');
?>

<table>
    <thead>
        <th scope="col" class="<?php echo $sort_by == 'id' ? 'sortColumn' : ''; ?>">
            <a href="myscript.php?s=id&d=<?php echo $reverse_direction; ?>">ID</a>
            <?php echo $sort_by == 'id' ? $sort_arrow : ''; ?>
        </th>
        <th scope="col" class="<?php echo $sort_by == 'id' ? 'sortColumn' : ''; ?>">
            <a href="myscript.php?s=title&d=<?php echo $reverse_direction; ?>">Title</a>
            <?php echo $sort_by == 'title' ? $sort_arrow : '';  ?>
        </th>
        <th scope="col" class="<?php echo $sort_by == 'id' ? 'sortColumn' : ''; ?>">
            <a href="myscript.php?s=total&d=<?php echo $reverse_direction; ?>">Total</a>
            <?php echo $sort_by == 'total' ? $sort_arrow : '';  ?>
        </th>
    </thead>
    <tbody>
        <?php
            if (count($results) > 0) {
                foreach ($results as $r) {
                    print '<tr>';
                    print '<th scope="row">'.$r['id'].'</th>';
                    print '<td>'.$r['title'].'</td>';
                    print '<td>'.$r['total'].'</td>';
                    print '</tr>';
                }
            } else {
                print '<tr><td colspan=3>No results found</td></tr>';
            }
        ?>  
    </tbody>
</table>

答案 2 :(得分:0)

这就是我在C#中的表现,你可以使用session而不是viewstate,其余部分也一样。

if (Convert.ToString(ViewState["sortField"]) == SortExpression){
if (ViewState["sortDir"].ToString() == "ASC")
        { ViewState["sortDir"] = "DESC"; }
    else
        { ViewState["sortDir"] = "ASC"; }
    }
else
{ ViewState["sortDir"] = "ASC"; }
ViewState["sortField"] = SortExpression;

答案 3 :(得分:0)

您可以使用$ _GET ['sort']从URL中获取sort变量,例如。 site.php?sort = ASC并将其传递给查询,记住完整性检查!