Php 如何获取当前年份以在MySQL中将其用作过滤器?

Php 如何获取当前年份以在MySQL中将其用作过滤器?,php,mysql,get,onchange,Php,Mysql,Get,Onchange,在我的页面上,我显示了许多结果。我希望访问者能够根据年份对结果应用过滤器。因此,如果用户选择过滤器“2014”,则只应显示2014年的结果 到目前为止,我已经为SQL创建了以下内容: $sql="SELECT * FROM $tbl_name"; if ($_GET['year'] == '2013') { $sql .= " AND year=2013 ORDER BY date DESC"; } elseif ($_GET['year'] == '2

在我的页面上,我显示了许多结果。我希望访问者能够根据年份对结果应用过滤器。因此,如果用户选择过滤器“2014”,则只应显示2014年的结果

到目前为止,我已经为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";
     }
过滤器由
标记触发,如下所示:

<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>

因此,问题不在
部分,而是
MySQL
部分应该随之增加…

尝试使用以下方法:

<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>
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++;
}
$sql=“从$tbl开始选择日期、年份”;
$year=2013年;

虽然($year只是一个很小的旁注,Stack的语法检查器的buckin’about
$sql=“SELECT*FROM$tbl_name;”
;)所以,你的意思是我最好不要使用那一行?更改了它,希望这更好?
$sql=“SELECT date,year FROM$tbl;”";缺少报价。这就是我的意思;)啊,小错误,没注意到。谢谢,但这一切都在继续,对吗?今年不会停止,今年会在2014年停止,明年会在2015年停止,以此类推。。。只要$year大于当前年份日期('Y'),循环就会中断。问题不是选项,而是SQL。>>>如果($_GET['year']='2013'){$sql.=“AND year=2013 ORDER BY date DESC”}您错过了一个,我会修复它。完美,刷新页面并查看您的代码:)这就成功了!谢谢小问题虽然不是很重要:如果我将
$year
的值更改为2010,则显示的第一个选项是2010。此选项不可选择。它就在那里,单击它不会启动任何操作。我当然可以改变年份,从一年前开始,但也许你知道什么可以解决这个问题?只是想把它弄干净,再说一遍,没什么重要的