2015-02-11 328 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>