Создание выпадающего списка месяцев и годов с помощью PHP
Бывают случаи, когда нужно динамически создать выпадающие списки с месяцем и годом с помощью PHP и select. Я использовал этот код во многих своих проектах. И в этой статье я поделюсь ним с вами.
Создание выпадающего списка годов
Создать выпадающий список годов чрезвычайно просто. Задайте первое и последнее значение диапазона, и наш массив готов. Теперь просто переберите его через цикл:
<?php
// устанавливаем первый и последний год диапазона
$yearArray = range(2000, 2050);
?>
<!-- выводим выпадающий список -->
<select name="year">
<option value="">Выберите год</option>
<?php
foreach ($yearArray as $year) {
// если вы хотите выбрать конкретный год
$selected = ($year == 2015) ? 'selected' : '';
echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>';
}
?>
</select>
Создание выпадающего списка месяцев
Существуют два способа, с помощью которых можно создать PHP выпадающий список select с месяцами. В первом мы определяем переменную массива PHP со списком всех месяцев и обрабатываем ее через цикл, и выводим выпадающее меню. Код следующий:
<?php
// устанавливаем массив месяцев
$formattedMonthArray = array(
"1" => "January", "2" => "February", "3" => "March", "4" => "April",
"5" => "May", "6" => "June", "7" => "July", "8" => "August",
"9" => "September", "10" => "October", "11" => "November", "12" => "December",
);
?>
<!-- выводим выпадающий список -->
<select name="month">
<option value="">Выберите месяц</option>
<?php
foreach ($monthArray as $month) {
// если вы хотите выбрать конкретный месяц
$selected = ($month == 5) ? 'selected' : '';
// если вы хотите добавить перед номером месяца дополнительный 0, раскомментируйте строку ниже
//$month = str_pad($month, 2, "0", STR_PAD_LEFT);
echo '<option '.$selected.' value="'.$month.'">'.$formattedMonthArray[$month].'</option>';
}
?>
</select>
Другой способ немного сложнее, поскольку в нем используется функция PHP, а не статический массив месяцев:
<?php
$monthArray = range(1, 12);
?>
<select name="month">
<option value="">Выберите месяц</option>
<?php
foreach ($monthArray as $month) {
// добавление дополнительного ноля
$monthPadding = str_pad($month, 2, "0", STR_PAD_LEFT);
// вы можете использовать любой год, который захотите
// вы можете использовать 'M' или 'F' в качестве предпочтительного формата
$fdate = date("F", strtotime("2015-$monthPadding-01"));
echo '<option value="'.$monthPadding.'">'.$fdate.'</option>';
}
?>
</select>
Если у вас есть предложения по оптимизации кода PHP select, напишите об этом в комментариях.