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

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

Фанат

oncle terrible
Команда форума
по коду я чота не заметил, что ты проверяешь только одно поле зак
оно у тебя там в цикле, то есть все.
 

dvijaya

Новичок
чего-то я не понимаю, а где у меня там цикл? Есть оператор условия if.

в коде так if (isset($_POST['zak'][$i]) && isset($_POST['kol'][$i])) {
...
}
else ...
 

Фанат

oncle terrible
Команда форума
ну, я-то тем более не знаю, поскольку единственная информация, которая у меня есть - это, дословно, "выдает ошибку".
кто выдает, какую ошибку - тайна, покрытая мраком
 

dvijaya

Новичок
if (isset($_POST['zak'][$i]) && isset($_POST['kol'][$i])) {
...
}
else ...

Если чекбокс зак выбран, а поле кол нет, то сообщение из else не появляется. А вот если не будет выбран чекбокс зак, то else отработает.
Вот в чем проблема
 

Фанат

oncle terrible
Команда форума
ну проверяй если выбран зак НЕ выбран кол - то ошибка.
плюс проверка на размер колов - если 0, то ошибка
 

dvijaya

Новичок
сделал так:
if (isset($_POST['zak'][$i]) && isset($_POST['kol'][$i])) {
if ($_POST ['kol'] !=="") {
...
}
else ...
}
else ...

Все ровно тоже самое. Что не так сделал?
 

Фанат

oncle terrible
Команда форума
блин, нафига было делать так, если я написал совсем по-другому?
и, кстати, надо для начала в форме индексы явно прописать
ВООБЩЕ-ТО
 

dvijaya

Новичок
Автор оригинала: dimagolov
:) я это написал во втором ответе в этой теме :)
В форме указал явно индексы

PHP:
<input type="text" maxLength="2" size="2" name="kol[0]">
<input type="checkbox" name="zak[0]" value="' . $str ['_art'] . '">
Теперь даже если заполнить оба поля - отрабатывается else. Что не так сделал?

-~{}~ 26.08.09 10:28:

Автор оригинала: *****
то есть, не [], а [1], [2]...
Так и сделал, но теперь отрабатывается else, как будто я не выбрал какое-то поле, хотя на самом деле оно было выбрано
 

Фанат

oncle terrible
Команда форума
теперь перебирай в цикле массив зак, и если в массиве кол с таким же индексом будет пусто - то ошибка.
перебирать, разумеется, через foreach
 

dvijaya

Новичок
Инпуты формируются следующим образом:

PHP:
$i=0; 
echo '<table width="100%" cellspacing="0" cellpadding="3">'; 
while($str=@mysql_fetch_array($result)) {  
if ($i==0) {echo "<tr>";} 
echo "<td>"; 
echo '<table cellspacing="0" cellpadding="3">'; 

echo '<tr><td>Кол-во: <input type="text" maxLength="2" size="2" name="kol[1]"></td></tr>'; 
echo '<tr><td>Заказать: <input type="checkbox" name="zak[1]" value="' . $str ['_art'] . '"></td></tr>'; 
echo "</table>";  
echo '</td>'; 
$i++; 
if ($i==4) {echo "</tr>"; $i=0;
} 	 
} 
echo '</table>';
Дальше идет:

PHP:
if (isset($_POST['zak'][$i]) && isset($_POST['kol'][$i])) {
...
}
else echo "Ошибка!";
Может я здесь где-то ошибку допустил, не могу сам разобраться.

-~{}~ 26.08.09 11:44:

Автор оригинала: *****
теперь перебирай в цикле массив зак, и если в массиве кол с таким же индексом будет пусто - то ошибка.
перебирать, разумеется, через foreach
Не понимаю, как это можно реализовать.

$a = $_POST['zak'];
$b = $_POST ['kol'];

foreach ($a as $in => $vol) {

вот я перебираю массив зак, а как сравнить с индексом массива кол?

if ($a [$in] == $b[]) {
...
}
else echo "пусто";

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