На моей странице я отображаю ряд результатов. Я хочу, чтобы посетитель мог применить фильтр к результатам в зависимости от года. Таким образом, если пользователь выбирает фильтр «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";
}
Фильтр срабатывает <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 года и заканчивая текущим годом:
var filteryear = '2012';
var filtertill = new Date().getFullYear();
var foptions = "";
for(var fy=filteryear; fy<=filtertill; fy++){
foptions += "<option value='urenregistratie_all.php?jaar="+ fy +"'>"+ fy +"</option>";
}
document.getElementById("filteryear").innerHTML = foptions;
Так что проблема не в <option>
часть, это MySQL
часть, которая должна увеличиться с этим …
попробуйте использовать что-то вроде этого:
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++;
}
Других решений пока нет …