按列排序\u名称帮助(通过HTML表视图中的链接)(PHP MySQL)
我的HTML表格的输出有几个列,如userid、name、age、dob 表标题只是列名的标题,我希望这是一个链接,单击时,所选列按顺序排序,ASC,然后按DESC(下次单击时)。我认为这很简单,但我遇到了一些困难 到目前为止,我已经生成了这个,除了显示“users.php?orderby=userid”的URL之外,没有任何输出按列排序\u名称帮助(通过HTML表视图中的链接)(PHP MySQL),php,mysql,Php,Mysql,我的HTML表格的输出有几个列,如userid、name、age、dob 表标题只是列名的标题,我希望这是一个链接,单击时,所选列按顺序排序,ASC,然后按DESC(下次单击时)。我认为这很简单,但我遇到了一些困难 到目前为止,我已经生成了这个,除了显示“users.php?orderby=userid”的URL之外,没有任何输出 <?php if(isset($_GET['orderby'])){ $orderby = $_GET['orderby']; $que
<?php
if(isset($_GET['orderby'])){
$orderby = $_GET['orderby'];
$query_sv = "SELECT * FROM users BY ".mysql_real_escape_string($orderby)." ASC";
}
//default query
else{
$query_sv = "SELECT * FROM users BY user_id DESC";
}
?>
<tr>
<th><a href="<?php echo $_SERVER['php_SELF']."?orderby=userid";?>">User ID</a></th>
如果我能做到这一点,我可以按D.O.B.对用户进行排序。接下来也可以使用相同的原则。有人有什么想法吗?应该是
SELECT*FROM users ORDER by…
,而不是SELECT*FROM users by…
。此外,您可能需要检查传递的参数是否是有效的列名,否则您的查询将我会失败。添加方向会更复杂
$orders=array("name","price","qty");
$key=array_search($_GET['orderby'],$orders));
$orderby=$orders[$key];
$query="SELECT * FROM `table` ORDER BY $orderby";
首先,您需要创建一个条件参数
if (empty($_GET['asc'])) {
$orderby.=" DESC";
$dir="&asc=1";
} else {
$orderby.=" ASC";
$dir="";
}
现在将$orderby放入查询,将$dir放入链接:
<a href="?orderby=userid<?php echo $dir?>">
是的,我刚刚看到了这个问题,但是我改变了它,仍然没有运气,什么都没有发生:(那么,我应该在标签中添加什么作为链接?是否仍然需要使用$u服务器global@Derek不需要,您不需要使用$\u服务器,尤其是如果您没有以正确的方式编写。
这非常有效!非常感谢。但是,有没有办法在我再次单击列标题时,保留顺序?在t当它按降序(即1,5,12)排序时,如果我再次单击,我希望它是12,5,1?这是一个简单的解决方案吗?