Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按列排序\u名称帮助(通过HTML表视图中的链接)(PHP MySQL)_Php_Mysql - Fatal编程技术网

按列排序\u名称帮助(通过HTML表视图中的链接)(PHP MySQL)

按列排序\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

我的HTML表格的输出有几个列,如userid、name、age、dob

表标题只是列名的标题,我希望这是一个链接,单击时,所选列按顺序排序,ASC,然后按DESC(下次单击时)。我认为这很简单,但我遇到了一些困难

到目前为止,我已经生成了这个,除了显示“users.php?orderby=userid”的URL之外,没有任何输出

<?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?这是一个简单的解决方案吗?