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
Форумы портала PHP.SU :: Версия для печати :: Проверка пустой переменной!
Форумы портала PHP.SU » PHP » Программирование на PHP » Проверка пустой переменной!

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

1. alexiy - 06 Апреля, 2011 - 08:41:18 - перейти к сообщению
При регистрации пользователь заполняет примерно 17 полей соответственно переменных будет столько же, чтобы их все по отдельности не проверять на пустоту, я загнал их в массив
после чего в цикле проверяю на пустоту
PHP:
скопировать код в буфер обмена
  1.  
  2. for($i = 0; $i < count($data); $i++)
  3. {
  4.   if(empty($data[$i]) $check = FALSE;//$check это просто флажок для проверки переменной
  5.   else $check = TRUE;
  6. }
  7.  

данный код работает нормально, но иногда он все же пропускает пустые переменные и не переключает флажок, подскажите в чем может быть проблема?
2. levchick - 06 Апреля, 2011 - 08:52:01 - перейти к сообщению
Давайте представим ситуацию, когда у вас 16 полей не заполнено, а последнее 17 заполнено, как будет работать Ваш код?

На первых 16 вариантах он выставит $check в false, потому что первые 16 не заполнены. А вот на последнем, 17-ом шаге, $check чудесным образом становиться true, потому как 17 поле то заполнено. И на выходе из цикла мы имеем $check==true и система думает, что заполнены все поля!

Вот так следует изменить код:
PHP:
скопировать код в буфер обмена
  1.  
  2. $check = TRUE;
  3.  
  4. for($i = 0; $i < count($data); $i++)
  5. {
  6.   if(empty($data[$i]) $check = FALSE;//$check это просто флажок для проверки переменной
  7. }
  8.  


В этом случае получаем, что если хотя бы одно из полей не заполнено, то $check выставиться в false, в случае если поля заполнены все, при прохождении цикла $check никак не измениться и все будет хорошо.
3. Viper - 06 Апреля, 2011 - 08:54:21 - перейти к сообщению
Если чекбокс не отмечен, то он не отправляется в $_POST. Используйте isset.
4. alexiy - 06 Апреля, 2011 - 09:21:18 - перейти к сообщению
levchick спасибо за помощь!

 

Powered by ExBB FM 1.0 RC1