2014-10-03 97 views
0

在我的頁面上,我顯示了一些結果。我希望訪問者能夠根據年份對結果應用過濾器。因此,如果用戶選擇過濾器「2014」,則只應顯示2014年的結果。如何在MySQL中使用這個過濾器作爲過濾器?

我的SQL創建了這個至今:

$sql="SELECT * FROM $tbl_name"; 
    if ($_GET['year'] == '2013') 
    { 
    $sql .= " AND year=2013 ORDER BY date DESC"; 
    } 
    elseif ($_GET['year'] == '2014') 
    { 
    $sql .= " AND year=2014 ORDER BY date DESC"; 
    } 

該過濾器由一個<a href>標籤引發的,就像這樣:

<select onChange="window.open(this.options[this.selectedIndex].value,'_self')"> 
<option value="page.php?year=2013">2013</option> 
<option value="page.php?year=2014">2014</option> 
</select> 

基本上,onChange重新加載頁面,設置該年使用_GET方法。

這一切工作得很好。除了一件事。我需要每年手動更改代碼,以便使選項值隨本年更新。所以,一旦新的一年開始,我必須自己更新代碼。有沒有辦法自動做到這一點?

更新

我有這樣的腳本,創建選項標籤,從2012年開始,在本年度結束:

​​

所以問題並不在<option>部分,它是應該增加它的MySQL部分...

+0

只是一個凌晨阿里納斯,斯塔克的語法檢查器的buckin'關於'$ SQL =「SELECT * FROM $ tbl_name;';) – 2014-10-03 23:44:14

+0

所以,你意思是我最好不要使用那條線?改變它,希望這是更好的? – 2014-10-03 23:51:51

+0

'$ sql =「選擇日期,年份從$ tbl」;'缺少報價。這就是我的意思;) – 2014-10-03 23:52:08

回答

2

嘗試使用類似這樣的東西:

HTML

<select onChange="window.open(this.options[this.selectedIndex].value,'_self')"> 
<?php 
$year = 2013; 
while($year <= date('Y')){ 
    echo '<option value="page.php?year='.$year.'">'.$year.'</option>'; 
    $year++; 
} 
?> 
</select> 

PHP

$sql="SELECT date,year FROM $tbl"; 

$year = 2013; 

while($year <= date('Y')){ 
    if($year == $_GET['year']){ 
     $sql .= " AND year=$year ORDER BY date DESC"; 
    } 
    $year++; 
} 
+0

但是這一直繼續下去嗎?它不會在當年停止 – 2014-10-03 23:52:13

+0

它將在今年和明年的2014年停止在2015年,等等......當$ year大於當前年份(即「Y」)時, – ThatMSG 2014-10-03 23:53:18

+0

問題不在於選項,而在於SQL。 >>>>>>>> if($ _GET ['year'] =='2013') { $ sql。=「AND year = 2013 ORDER BY date DESC」; } <<<<<<<<<<這部分應該自動增加到未來一年 – 2014-10-03 23:54:44

相關問題