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 » » Вопросы новичков » Проверка отправки всех полей формы

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

1. Dezmont - 28 Ноября, 2011 - 14:35:21 - перейти к сообщению
Добрый день, подскажите пожалуйста, как в моём случае проверить отправлены ли все поля формы?
Есть страница с, предположим, 8 полями. Эти поля генерируются скриптом из массивов, которые заданы вручную. Например вот так:
PHP:
скопировать код в буфер обмена
  1. $flico = array(
  2.         'name' => 'Имя',
  3.         'surname' => 'Фамилия',
  4.         'middle_name' => 'Отчество',
  5.         'birthday' => 'Дата рождения',
  6.         'p_data' => 'Серия и номер паспорта',
  7.         'p_place' => 'Место выдачи',
  8.         'p_date' => 'Дата выдачи',
  9.         'register' => 'Прописка'
  10. );


Нужно проверить каждое поле, было ли оно отправлено. Я знаю, что можно сделать
PHP:
скопировать код в буфер обмена
  1. if(
  2.         isset($_POST['name']) && !empty($_POST['name']) &&
  3.         isset($_POST['surname']) && !empty($_POST['surname']) &&
  4.         isset($_POST['middle_name']) && !empty($_POST['middle_name']))
и так далее. Но дело в том, что у меня не 1 массив, а много...=)) В зависимости от $_GET выводится определённая форма с различными полями.
Не мог бы кто-нибудь подсказать, как проверить заполнены ли ВСЕ поля формы?

З.Ы. Я думал, может как-нибудь через array_walk, но чёт так и не получилось(((
2. filkeith - 28 Ноября, 2011 - 14:52:46 - перейти к сообщению
как то так
PHP:
скопировать код в буфер обмена
  1. foreach($_POST as $x => $y)
  2.         {
  3.      if (isset($_POST[$x]))
  4. {
  5. echo 'есть!';
  6. }
  7.  
  8.         }
3. DlTA - 28 Ноября, 2011 - 14:54:06 - перейти к сообщению
дык а в чем проблема
метод "в лоб"
PHP:
скопировать код в буфер обмена
  1. foreach($flico as $nameInput=>$desInput){
  2.   if (!isset($_POST[$nameInput]) or $_POST[$nameInput]==''){
  3.     // делаем обрыв или исключение или что душе угодно
  4.   }
  5. }
4. Dezmont - 28 Ноября, 2011 - 14:57:14 - перейти к сообщению
Единственное что смог придумать:
PHP:
скопировать код в буфер обмена
  1. global $i;
  2. $i=1;
  3. //Получаем $i=0, если не заполнено хотя бы 1 поле. Если всё нормально, получаем 1.
  4. foreach($_POST as $k=>$v){
  5.         if(isset($_POST["$k"]) && !empty($_POST["$k"])){       
  6.                 $i*=1;
  7.         }
  8.         else{
  9.                 $i*=0;
  10.                 break;
  11.         }
  12. }
  13. //Тут соответственно выполняется скрипт, если все поля заполнены
  14. if($i){}


Но выглядит как то по дурацки. Может кто-нить предложит что-нибудь поумнее? )
(Добавление)
О. Спасибо большое... Пока писал свою фигню, уже получил ответ))
(Добавление)
Упс... Обманулся я. По Вашим кодам не получится то, что мне нужно. Мне нужно, чтобы только после проверки всех полей формы выполнялись какие-то действия.
В общем нужно чтобы все поля формы сначала проверились, если там нет пустых строк "", то тогда все данные пишутся в БД. Если есть что-то не то, то выводится сообщение: "Вы ввели не все данные".

Что-то типа моего последнего кода, только более грамотного.
5. Мелкий - 28 Ноября, 2011 - 15:33:47 - перейти к сообщению
Dezmont, идите от обратного. Немного дополнив вариант DlTA:

PHP:
скопировать код в буфер обмена
  1. $is_form_correct = true;
  2. foreach($flico as $nameInput=>$desInput){
  3.   if (!isset($_POST[$nameInput]) or $_POST[$nameInput]==''){
  4. $is_form_correct = false;
  5.   }
  6. }
  7.  
  8. if ($is_form_correct) {
  9. //форма верна
  10. }
6. Dezmont - 28 Ноября, 2011 - 15:44:54 - перейти к сообщению
Оооой спасибо....=/
Значит и мой код нормально работает. Я просто от глобальной переменной хотел избавиться.
Ток начал пытаться изучить нормально ПХП. 2 недели видеоуроки всякие смотрел, теперь в голове каша. Вот не туда и присунул. =)

Спасибо большое. Тема is closed. =)

 

Powered by ExBB FM 1.0 RC1