2015-02-11 200 views
0

我很困扰如何创建一个按钮,将按照升序或降序排序打印到php文件中的表中的数据。PHP MYSQL - 按钮排序asc/desc

<form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Order by Week 
<button type="submit" name="sort week" class="button" value="1"> Sort Week </button> 
</form> 
<?php if('sort week' == true){ 
    "SELECT * FROM `classes` ORDER BY `classes`.`week` ASC"; 
} 
?> 

这是一个简单的例子,我试图达到目标,我只是停留在php代码端。任何帮助将非常感激。

+0

“本周排序”永远==属实,这将等于“本周排序”。这是一个字符串。 – Devon 2015-02-11 23:06:09

+1

@Devon:Au反对。使用非空字符串的'=='与'TRUE'的松散比较将永远*为真。请参阅[PHP类型比较表](http://php.net/manual/en/types.comparisons.php#types.comparisions-loose) – eggyal 2015-02-11 23:14:13

+0

@eggyal:touche。 – Devon 2015-02-12 00:35:26

回答

0

我会删除空格,然后使用$ _ POST捕捉它开始..

<form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Order by Week 
<button type="submit" name="sort_week" class="button" value="1"> Sort Week </button> 
</form> 
<?php if($_POST['sort_week'] === true) { 
"SELECT * FROM `classes` ORDER BY `classes`.`week` ASC"; 
}?> 
+0

sort_week will not === true ...将它改为==或===“1”,因为它会以字符串形式返回。 – 2015-02-11 23:32:12

+0

所以真的!谢谢Kev :-) – 2015-02-11 23:36:41

0

你在找什么,是$ _POST数组你,提交表单的PHP脚本时或者如果您不知道它是POST还是GET方法,则使用$ _REQUEST。

<?php 
if($_POST["sort week"] == 1){ 
    $query="SELECT * FROM `classes` ORDER BY `classes`.`week` ASC"; 
} 
?> 
0

除了你已经回答的问题,你应该改变按钮的值,取决于假装做什么。

通常,这是按照以下顺序完成的:非排序,asc,desc。

我的意思是,列没有排序,当你第一次点击时,它得到排序的ASC,如果你再次点击,你排序它DESC,如果你再次点击你回去没有排序。

因此,在你的代码会是这样的:

<form name="Table Properties" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Order by Week 
<?php 
$query = "SELECT * FROM `classes` "; 
$value = 0; 
switch($_POST['sort_week']) { 
case 1: 
    $value = 2; 
    $query .= "ORDER BY `classes`.`week` DESC"; 
    break; 
case 0: 
    $value = 1; 
    $query .= "ORDER BY `classes`.`week` ASC"; 
    break; 
default: 
    break; 
} 
?> 
<button type="submit" name="sort_week" class="button" value="<?php echo $value; ?>"> Sort Week </button> 
</form>