Обработка и проверка данных из форм

Статус
В этой теме нельзя размещать новые ответы.

dvijaya

Новичок
Обработка и проверка данных из форм

Всем привет!

Такой вопрос.

Есть скрипт которые создает в цикле 2 поля формы:
PHP:
echo 'Кол-во: <input type="num" maxLength="2" size="2" name="kol[]">'; 
echo 'Заказать: <input type="checkbox" name="zak[]" value="' . $s ['artikul'] . '">
После выбора идет вывод на экран и отсылка по почте. Причем каждая пара эти полей должна строго соответствовать друг другу.

Проблема заключается в проверке введенных или не введенных данных в эти формы.
То есть я пишу:

PHP:
if (isset($_POST['zak']) && ($_POST['kol'])) { 
...
}
else ...
В итоге получается, что если не ввести данные в поле kol, то скрипт ошибку не выдаст.

Подскажите, как можно решить мою задачу. Заранее спасибо.
 

dimagolov

Новичок
dvijaya, твои $_POST['zak'] и $_POST['kol'] это массивы, надо их перебирать. только по-моему надо индексы массива в html формы прописыват явно, так как передаваться будут только не пустые поля.
 

baev

‹°°¬•
Команда форума
Во-первых, почему "($_POST['kol'])" без "isset"?

Во-вторых, если «каждая пара эти полей должна строго соответствовать друг другу», то и проверять надо эти пары.
Типа, в цикле:
PHP:
if (isset($_POST['zak'][$i]) && isset($_POST['kol'][$i])) { 
...
}
else ...
 

dvijaya

Новичок
Автор оригинала: dimagolov
dvijaya, твои $_POST['zak'] и $_POST['kol'] это массивы, надо их перебирать. только по-моему надо индексы массива в html формы прописыват явно, так как передаваться будут только не пустые поля.
Из поля типа chekbox возвращается только то, что было введено, а вот из поля типа num, возвращается и то, что было введено, и пустые значения тоже.

Я в курсе, после if идет foreach
 

dvijaya

Новичок
Автор оригинала: baev
Во-первых, почему "($_POST['kol'])" без "isset"?

Во-вторых, если «каждая пара эти полей должна строго соответствовать друг другу», то и проверять надо эти пары.
Типа, в цикле:
PHP:
if (isset($_POST['zak'][$i]) && isset($_POST['kol'][$i])) { 
...
}
else ...
Сделал, но теперь если ввести данные во все поля, выдает ошибку. Как мне кажется дело в том, что из инпута типа чекбокс, возвращается только введенные данные, а из инпута типа нум возвращается все. Вот что показал print_r
С поля zak тип чекбокс: Array ( [0] => 1516001 [1] => 1517001 )
С поля kol тип нум: Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => 1 [17] => 5 [18] => )

В обоих случаях было 19 итераций
 

Фанат

oncle terrible
Команда форума
нет, просто интересно. никогда не встречал

по вопросу.
зачем проверять заполненность чекбоксов, если предполагается, что могут быть заполнены не все?
 

dvijaya

Новичок
потому что это обязательное поле. Пользователь должен хоть один чекбокс, но выбрать
 

Фанат

oncle terrible
Команда форума
обязательное, ля, и "хоть один", ля, это разные вещи. ля
если надо проверять, что хоть один заполнен, значит проверять хоть один, а не все.
ля
 

Фанат

oncle terrible
Команда форума
поле. а не поля
по-ле. одно. а не в-с-е поля.
как слышно меня? прием.
 

dvijaya

Новичок
тебя слышно, но что ты имеешь ввиду не всегда можно понять.

Чекбоксов много, чтобы перейти к следующему шагу, нужно хотя бы один из них выбрать.
 

Фанат

oncle terrible
Команда форума
ну так и надо, наверное, проверять наличие одного, а не всех?
 

dvijaya

Новичок
ты сейчас про поля типа чекбокс или поля типа нум?

Так я и проверяю, если переменная установлена, то есть if (isset ($_POST ['zak'])) { ... }
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху