Как сделать так, чтобы только текущий год отображался один раз?

#php #date #drop-down-menu

#php #Дата #выпадающее меню

Вопрос:

У меня есть этот запрос ниже, который является выпадающим для года (с 1900 по текущий). Я использую переменную $, чтобы сначала отобразить ранее выбранный год в раскрывающемся списке формы редактирования. Это работает, за исключением того, что для всех остальных лет 2011 также повторяется с ними. Как мне настроить его так, чтобы сначала отображался $ y, а затем все годы под ним?

Код:

     <select name="year">
<?PHP for($i=date("1900"); $i<=date("2011"); $i  )
        if($year == $i)
            echo "<option value='$y' selected>$y</option>
     <option value='$i' selected>$i</option>";
        else
            echo "<option value='$y' selected>$y</option>
     <option value='$i'>$i</option>";
?>
    </select></td>
    </tr> 
  

Комментарии:

1. $y Должно быть $year ?

2. Кроме того, почему вы делаете date("1900") вместо just 1900 ?

3. 1 @Michael, я не понимаю этот цикл for. Мне кажется, что он зацикливает много дат.

Ответ №1:

Сохраняйте простоту:

     <select name="year">
        <?php for($i=1900; $i<=date('Y'); $i  ) {
        if($i == date('Y'))
            echo "<option value='$i' selected='selected'>$i</option>";
        else
            echo "<option value='$i'>$i</option>";
        }
?>
    </select></td>
    </tr> 
  

Или даже лучше:

 <select name="year">
    <?php for($i=1900; $i<=date('Y'); $i  )
        echo "<option value='$i' ".(($i == date('Y')?'selected="selected"':'')).">$i</option>";
    ?>
</select></td>
</tr> 
  

И наоборот

 <select name="year">
    <?php for($i=date('Y'); $i>=1900; $i--)
        echo "<option value='$i' ".(($i == date('Y')?'selected="selected"':'')).">$i</option>";
    ?>
</select></td>
</tr> 
  

Ответ №2:

     <select name="year">
<?PHP 
      echo "<option value='$year' selected>$year</option>
      for($i=1900; $i<=2011; $i  )
        if($year != $i)
            echo "<option value='$i'>$i</option>";
     <option value='$i'>$i</option>";
?>
    </select></td>
    </tr> 
  

Комментарии:

1. Спасибо! и как мне его отменить? вместо 1900-2011 как мне сделать 2011-1900? я пробовал swtiching, но это не работает.

2. Вы должны изменить for строку for($i=2011; $i<=1900; $i--) , чтобы это считалось «назад».

Ответ №3:

Не уверен, что $y это такое, но я думаю $year , это текущий год:

    <select name="year">
    <?php 
    for($i=date("1900"); $i<=date("2011"); $i  )
    {
            if($year == $i)
                echo '<option value="'.$i.'" selected="selected">'.$i.'</option>';
            else
                echo '<option value="'.$i.'">'.$i.'</option>';
    }
    ?>
    </select>