Bartman
Новичок
Прошу проревьювить функцию
Приветствую всех!
Передо мной стояла задача: взять временную метку записи из таблицы MySQL, разбить её "на составляющие" и сгенерить соот-щие селекты. Для реализации поставленой задачи я написал функцию, которая отвечает непосредствнно за это. Я хотел бы обратиться к посетителям форума с просьбой проревьювить мою ф-ю на предмет универсальности и оптимальности кода. В текущем представлении ф-я отлажена и полностью работоспособна. Принимаются любые замечания и предложения. Полный код ф-ии привожу ниже.
Заранее благорарю!
Приветствую всех!
Передо мной стояла задача: взять временную метку записи из таблицы MySQL, разбить её "на составляющие" и сгенерить соот-щие селекты. Для реализации поставленой задачи я написал функцию, которая отвечает непосредствнно за это. Я хотел бы обратиться к посетителям форума с просьбой проревьювить мою ф-ю на предмет универсальности и оптимальности кода. В текущем представлении ф-я отлажена и полностью работоспособна. Принимаются любые замечания и предложения. Полный код ф-ии привожу ниже.
Заранее благорарю!
PHP:
$months = array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
function BuildDateSelection ($timestamp = -1, $fieldname, $yearstart, $yearend) {
global $months;
if ($timestamp == -1) {
$timestamp = time();
}
// Получаем дату и вермя в ассоциативном массиве
$today = getdate($timestamp);
$day = $today["mday"];
$month = $today["mon"];
$year = $today["year"];
$hours = $today["hours"];
$minutes = $today["minutes"];
// Формируем селект дней с позиционированием на текущем дне
$string = "\n<select name=".$fieldname."_day>";
for ($x = 1; $x < 32; $x++) {
$string .= ($x == $day) ? "\n<option value=". $x ." selected>". $x. "</option>" : "\n<option value=". $x .">". $x. "</option>";
}
$string .= "\n</select>";
// Формируем селект месяцев с позиционированием на текущем месяце
$string .= "\n<select name=".$fieldname."_month>";
for ($x = 1; $x <= 12; $x++) {
$string .= ($x == $month) ? "\n<option value=". $x ." selected>". $months[$x-1]. "</option>" : "\n<option value=". $x .">". $months[$x-1]. "</option>";
}
$string .= "\n</select>";
// Формируем селект лет с позиционированием на текущем годе
$string .= "\n<select name=".$fieldname."_year>";
for ($x = $yearstart; $x <= $yearend; $x++) {
$string .= ($x == $year) ? "\n<option value=". $x ." selected>". $x. "</option>" : "\n<option value=". $x .">". $x. "</option>";
}
$string .= "\n</select>";
// Формируем селект часов с позиционированием на текущем часе
$string .= "\n<select name=".$fieldname."_hour>";
for ($x = 1; $x < 25; $x++) {
$string .= ($x == $hours) ? "\n<option value=". $x ." selected>". $x. "</option>" : "\n<option value=". $x .">". $x. "</option>";
}
$string .= "\n</select>";
// Формируем селект минут с позиционированием на текущей минуте
$string .= "\n<select name=".$fieldname."_minute>";
for ($x = 1; $x <= 60; $x++) {
$string .= ($x == $minutes) ? "\n<option value=". $x ." selected>". $x. "</option>" : "\n<option value=". $x .">". $x. "</option>";
}
$string .= "\n</select>";
return $string;
}
// Пример запроса к MySQL чтобы получить временный штамп в формате UNIX
$query = "SELECT * , UNIX_TIMESTAMP(data_post) AS time FROM test";
// Пример вызова ф-ии
BuildDateSelection ($row["time"], "example", 1999, 2005);