#php #date
#php #Дата
Вопрос:
Хорошо, итак, я пытался сделать так, чтобы выпадающее меню формы автоматически выбирало текущую дату без особого кодирования javascript, поэтому я получил приведенный ниже код (он не выбирает автоматически, но он включает текущую дату в качестве первых параметров). Год не отображался первым, как предполагалось. Я сделал то же самое для дня и месяца, и эти 2 работали отлично, но когда у меня был тот же код, за исключением дней / месяцев вместо лет (mday и mon внутри скобок), выбор первого года не отображался. Я предполагаю, что проблема заключается в части внутри двух экземпляров [$ t[‘year’]] . Остальная часть кода работает нормально, но я просто включил его на случай, если я что-то пропустил (я также попытался заменить все годы на последние соответствующие им последние 2 цифры, но результат тот же).
<?php
$t = getdate(time());
$year = array(1 =>'2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030');
echo 'amp;nbsp Year <select name="year" >';
echo '<option value="" . $t['year'] . "">' . $year[$t['year']] . '</option>';
foreach( $year as $key => $value ) {
echo "<option value = "$key">$value</option>";
}
echo '</select>'; ?>
Ответ №1:
Используйте date('Y')
.
http://php.net/manual/en/function.date.php
<?php
$t = getdate(time());
$year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030');
echo 'amp;nbsp Year <select name="year" >'."n";
echo '<option value="' . array_search(date('Y'),$year) . '">' . date('Y') . '</option>'."n";
foreach( $year as $key => $value ) {
echo "<option value = "$key">$value</option>n";
}
echo '</select>'."n";
?>
При этом также будет выбрано только одно значение в select
, поэтому вам не нужно два:
<?php
$t = getdate(time());
$year = array('2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024', '2025', '2026', '2027', '2028', '2029', '2030');
$c_year = date('Y');
echo 'amp;nbsp Year <select name="year" >'."n";
foreach( $year as $key => $value ) {
echo "<option".($c_year == $value?' selected="true"':'')." value = "$key">$value</option>n";
}
echo '</select>'."n";
?>
Комментарии:
1. Я уже прочитал обо всем этом. Это не обязательно работает в моей ситуации. Я пытаюсь получить эквивалент года для ‘mday’ и ‘mon’, который должен быть ‘year’…
2. Смотрите мою правку. Я не уверен, почему вы делаете это именно так, но это сработает.
3. Потратив много времени на проверку того, что хотел OP, я, к сожалению, 1 это. Я устал от необходимости постоянно отсылать людей к php.net руководство пользователя! Редактировать: О, хорошо, было что добавить!
4. хм, извините, я все еще новичок в этом. Не знал, как использовать array_search. Спасибо 🙂
5. @user987026 — Я добавил второй вариант, который, вероятно, лучше.
Ответ №2:
$years = range(2000, 2030);
$cur_year = date('Y');
echo '<select name="year">';
foreach($years as $year)
if($year == $cur_year)
echo "<option selected>$year</option>";
else
echo "<option>$year</option>";
echo '</select>';