Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: 30 Февраля ))

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
teddy
Отправлено: 23 Апреля, 2013 - 14:24:08
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Здравствуйте уважаемые форумчане. Возникла проблема при написании скрипта для заполнении анкеты регистрации. Есть option-ы где пользователь может выбрать день, месяц и год своего рождения. Хочу сделать так, что бы нельзя было выбрать свыше 30 Февраля, именно Февраля а не другие месяцы. Сделал так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['month'])){
  2. $day = 29;
  3. $month = $_POST['month'];
  4. if($day>$month)
  5. echo "30 Февраля не существует";
  6. }

Но как вы я думаю поняли, $_POST['month'] это "name" select-а в котором лежат месяца.
В итоге при любом выборе месяца, даже 30 Января мне выдает ошибку "30 Февраля не существует" - это то понятно почему... Но как исправить? Ведь у select-ов нет атрибута name что бы обратиться к ним по отдельности и сравнить?
 
 Top
Fetis
Отправлено: 23 Апреля, 2013 - 14:30:36
Post Id



Частый гость


Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012  
Откуда: Киров, Россия


Помог: 0 раз(а)




А switch и case не работает?
 
 Top
teddy
Отправлено: 23 Апреля, 2013 - 14:32:10
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Работает )) а if-ом решить эту проблему никак?
 
 Top
DelphinPRO
Отправлено: 23 Апреля, 2013 - 14:38:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




teddy пишет:
В итоге при любом выборе месяца, даже 30 Января мне выдает ошибку "30 Февраля не существует"

естественно, вы сравниваете день с месяцем. 29 всегда больше номера любого месяца (1..12)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 23 Апреля, 2013 - 14:39:15
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




DelphinPRO пишет:
естественно, вы сравниваете день с месяцем. 29 всегда больше номера любого месяца (1..12)

Ага, о чем я и вещаю в теме топика )
 
 Top
playdance
Отправлено: 23 Апреля, 2013 - 14:40:49
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Я что-то не втыкаю, а зачем вам день с месяцем то сравнивать?
 
 Top
teddy
Отправлено: 23 Апреля, 2013 - 14:43:06
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




playdance пишет:
Я что-то не втыкаю, а зачем вам день с месяцем то сравнивать?

Потому что 30 Февраля не существует, как же и 31 )
 
 Top
Fetis
Отправлено: 23 Апреля, 2013 - 14:45:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 153
Дата рег-ции: Дек. 2012  
Откуда: Киров, Россия


Помог: 0 раз(а)




Автор, очнитесь: Во всех календарях(почти) месяцев всегда 12, а дней - 29,30,31.

Зачем сравнивать день(например 30) с месяцем(например 10) что вы этим найдете??)

у вас щас:

Если(29 день>месяца $_POST){
echo
}

(Отредактировано автором: 23 Апреля, 2013 - 14:47:29)

 
 Top
DelphinPRO
Отправлено: 23 Апреля, 2013 - 14:46:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. <select name="day">
  2.   <option>1</option>
  3.   <option>2</option>
  4.   ...
  5.   <option>31</option>
  6. </select>
  7.  
  8. <select name="month">
  9.   <option value=1>Январь</option>
  10.   <option value=2>Февраль</option>
  11.   ...
  12.   <option value=12>Декабрь</option>
  13. </select>



PHP:
скопировать код в буфер обмена
  1. $countDays = array(1=>31,29,31,30,31,30,31,31,30,31,30,31);
  2. $months = array(1=>'январе', 'феврале', 'марте', 'апереле', 'мае', 'июне', 'июле', 'августе', 'сентябре', 'октябре', 'ноябре', 'декабре');
  3. $month     = $_POST['month'];
  4. $day       = $_POST['day'];
  5.  
  6. if ($day > $countDays[$month]) {
  7.   echo 'Сорри, ' . $day . ' в ' . $months[$month] . ' не бывает :)';
  8. }

(Отредактировано автором: 23 Апреля, 2013 - 14:48:42)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 23 Апреля, 2013 - 14:47:47
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Fetis пишет:
Автор, очнитесь: Во всех календарях(почти) месяцев всегда 12, а дней - 29,30,31.

Блин похоже я делаю наоборот ) точно... спасибо за подсказку )
(Добавление)
DelphinPRO
Благодарю за подробный ответ )

Вопрос решен... спасибо большое всем
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB