Как создать форму с HTML и PHP, которая собирает дату - PullRequest
0 голосов
/ 21 августа 2011

У меня есть форма, которую я хочу, чтобы пользователь добавил в свой день рождения.У меня есть три предмета.Один на месяц, один на день и один на год.Я использую php для создания формы.Моя проблема в том, что если кто-то выберет февраль в качестве месяца, он все равно может выбрать день 31. Для всех месяцев есть 31 день.Нужно ли использовать javascript, чтобы реагировать на изменения поля месяца?Как мне решить эту проблему?Пожалуйста помоги.Вот мой код ...

                    $today = time();
                    $f_today = date("M-d-Y", $today);
                    //The Month
                    $todayMonth = date("n",$today);
                    echo "<select id='monthSelect' name='dateMonth'>";
                    for ($n=1;$n<=12;$n++) {
                        echo "<option value='$n'";
                        if ($n == $todayMonth) {
                            echo " selected='selected'";
                        }
                        echo ">$monthName[$n]</option>";
                    }
                    echo "</select>";
                    //The Day
                    $todayDay = date("d",$today);
                    echo "<select id='daySelect'name='dateDay'>";
                    for ($n=1;$n<=31;$n++) {
                        echo "<option value='$n'";
                        if ($n == $todayDay) {
                            echo " selected='selected'";
                        }
                        echo ">$n</option>";
                    }
                    echo "</select>";
                    //The Year
                    $todayYear = date("Y",$today);
                    echo "<select name='dateYear'>";
                    for ($n=$todayYear-100;$n<=$todayYear;$n++) {
                        echo "<option value='$n'";
                        if($n == $todayYear) {
                            echo " selected='selected'";
                        }
                        echo ">$n</option>";
                    }
                    echo "</select><br/><br/>";

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

Вы можете использовать php's cal_days_in_month () , который будет возвращать правильное число дней для данного месяца и года в календаре. Вы можете использовать событие onchange в javascript для элементов month и year. Итак, когда пользователь выбирает месяц или год, вы вызываете скрипт php (через AJAX), который использует cal_days_in_month (), чтобы вернуть правильное количество дней для этого месяца и года. Затем вы используете данный результат для обновления содержимого #daySelect.

Конечно (как кто-то предлагал ранее) jQuery datepicker - лучшее / более простое решение в этой ситуации.

1 голос
/ 21 августа 2011

Вы можете определить месяцы в ассоциативном массиве следующим образом: массив (Jan => 30, Feb => 28, ...).Свяжите блок выбора месяца с помощью обработчика onChange с функцией JS, которая получает значение поля выбора (январь, февраль и т. Д.) И использует его в качестве ключа в arr.Используйте значение из массива, чтобы добавить / вычесть правильное количество дней.

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