PHP Form Generator - PullRequest
       56

PHP Form Generator

1 голос
/ 15 июня 2009

Как бы я сгенерировал части формы, используя PHP?

Я хотел бы сделать форму, которая позволила бы пользователю вводить дату через выпадающие меню месяца, дня и года соответственно, не вводя каждый опция меню, как бы я автоматически сделал это с PHP?

Например, как мне сгенерировать дни 1-31 для января, 1-28 для февраля и так далее, не вводя их вручную, используя чистый HTML?

Ответы [ 4 ]

2 голосов
/ 15 июня 2009

Вот упрощенная версия того, как я делаю это в PHP

<select name="birthday_month" id="birthday_month">
    <option value=""></option>
    <? foreach(range(1,12) as $month): ?>
    <option value="<?= $month ?>"><?= date('F', mktime(1,1,1,$month,1,2000)) ?></option>
    <? endforeach; ?>
</select>

<select name="birthday_day" id="birthday_day">
    <option value=""></option>
    <? foreach(range(1,31) as $day): ?>
    <option value="<?= $day ?>"><?= $day ?></option>
    <? endforeach; ?>
</select>

<select name="birthday_year" id="birthday_year">
    <option value=""></option>
    <? foreach(range(date('Y'),1900) as $year): ?>
    <option value="<?= $year ?>"><?= $year ?></option>
    <? endforeach; ?>
</select>

Вы можете создавать функции, которые выводят их, если вы собираетесь их часто использовать.

Редактировать: я не трачу время на автоматическое заполнение дней, потому что дату все равно следует проверять на стороне сервера.

0 голосов
/ 15 июня 2009

Также, если вы хотите отобразить количество дней в месяце, в котором выполняется скрипт, вы можете сделать:

print date("t", mktime(0,0,0, date("n") ));  

Выводит 30, 31 или 28 (если февраль)

0 голосов
/ 15 июня 2009

Два ответа:

1: Найти класс календаря JavaScript.

2: в PHP:

$year = 2009;  // February has different days in month - based on leap year
 for ($month = 1; $month <= 12; $month++)
   $lastDayOfMonth[$month] = date("j", strtotime("yesterday", strtotime($month+1."/1/$year")));

Теперь у вас есть массив (карта) месяцев, индекс по месяцам, со значениями, указанными в количестве дней в месяце;

Временной код в основном говорит это: найдите первый день следующего месяца - затем найдите вчера (день, предшествующий 1-му дню следующего месяца) - затем верните день. Таким образом, последний день месяца - это количество дней в этом месяце.

-CF

0 голосов
/ 15 июня 2009

Я думаю, что HTML5 имеет компонент выбора даты, но, возможно, это слишком рано для использования.

Гален находится на правильном пути, но при переходе с одного месяца на другой в браузере вы не получите правильные настройки даты (то есть: у вас 31 февраля, если вы не позвоните вернуться на сервер)

Предложение Itay Moav о Javascript. Я считаю, что это правильный путь: используйте javascript для изменения DOM на стороне браузера. Когда пользователь выбирает февраль, вызывая событие onChange для селектора месяца, вы переписываете селектор даты и создаете 28-29 дней в зависимости от года (!)

Я однажды сделал что-то вроде этих строк , вы сможете без труда разобрать страницу / скрипт (сайт на японском, , но исходный код плохо написано).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...