我想为我的mysql数据库结果创建动态排序。我现在用一个查询输出结果。我想创建一个2的链接,将排序的结果,所选的链接,再次点击和链接ASC或DSEC的结果。我一直在寻找,但无法找到正确的方法来做到这一点。我甚至下载了一个框架,看看这是如何做到的,但没有成功。示例如下:标题总计这听起来很简单,但我无法在网上找到一个动态的例子。还有谁发现谷歌提供的过时和论坛的结果比实际有用的页面多?即使你按去年和相关性排序。
ctzwtxfj1#
<?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....
dfty9e192#
<?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>
swvgeqrz3#
这是我在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;
00jrzges4#
你可以使用$_GET ['sort']从URL中获取sort变量。sort=ASC并将其传递给查询,记住关于健全性检查!
4条答案
按热度按时间ctzwtxfj1#
dfty9e192#
swvgeqrz3#
这是我在C#中的做法,你可以使用session而不是viewstate,其余的都是一样的。
00jrzges4#
你可以使用$_GET ['sort']从URL中获取sort变量。sort=ASC并将其传递给查询,记住关于健全性检查!