这更像是一个查询而不是一个问题。我想为我的mysql数据库结果创建动态排序。我目前用查询输出结果。我想创建一个2链接,它将按所选链接对结果进行排序,再次单击并链接ASC或DSEC结果。
我一直在寻找,但无法找到正确的方法。
我甚至下载了一个框架,看看这是如何完成的,但没有成功。 示例如下:
TITLE TOTAL
这听起来很简单,我无法在网上找到动态的例子。
其他人发现谷歌提供的结果比过时的实用网页有更多的过时和论坛? 即使你按去年和相关性排序。希望有人能给我一些建议,谢谢
答案 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并将其传递给查询,记住完整性检查!