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

 PHP.SU

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


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

> Описание: Как проверить отправлена ли форма $_POST
Dezmont
Отправлено: 28 Ноября, 2011 - 14:35:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


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




Добрый день, подскажите пожалуйста, как в моём случае проверить отправлены ли все поля формы?
Есть страница с, предположим, 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, но чёт так и не получилось(((
 
 Top
filkeith
Отправлено: 28 Ноября, 2011 - 14:52:46
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


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




как то так
PHP:
скопировать код в буфер обмена
  1. foreach($_POST as $x => $y)
  2.         {
  3.      if (isset($_POST[$x]))
  4. {
  5. echo 'есть!';
  6. }
  7.  
  8.         }
 
 Top
DlTA
Отправлено: 28 Ноября, 2011 - 14:54:06
Post Id



Постоянный участник


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


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




дык а в чем проблема
метод "в лоб"
PHP:
скопировать код в буфер обмена
  1. foreach($flico as $nameInput=>$desInput){
  2.   if (!isset($_POST[$nameInput]) or $_POST[$nameInput]==''){
  3.     // делаем обрыв или исключение или что душе угодно
  4.   }
  5. }
 
 Top
Dezmont
Отправлено: 28 Ноября, 2011 - 14:57:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


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




Единственное что смог придумать:
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){}


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

Что-то типа моего последнего кода, только более грамотного.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Ноября, 2011 - 15:33:47
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




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. }


-----
PostgreSQL DBA
 
 Top
Dezmont
Отправлено: 28 Ноября, 2011 - 15:44:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


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




Оооой спасибо....=/
Значит и мой код нормально работает. Я просто от глобальной переменной хотел избавиться.
Ток начал пытаться изучить нормально ПХП. 2 недели видеоуроки всякие смотрел, теперь в голове каша. Вот не туда и присунул. =)

Спасибо большое. Тема is closed. =)
 
 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