Как прервать IF

darksmoke

Новичок
Как прервать IF

PHP:
if ($razdel == 0) echo '<li>Вы не ввели... ./li>'; 
 if ($spec == "")  echo '<li>Вы не ввели... .</li>'; 
 if ($obraz == 0) echo '<li>Вы не ввели... .</li>'; 
 if ($sex == 0) echo '<li>Вы не ввели... .</li>';
 if ($goroda == 0) echo '<li>Вы не ввели... .</li>';
 if ($grafik == 0) echo '<li>Вы не ввели... .</li>';
 if ($goroda == 0) echo '<li>Вы не ввели... .</li>';
 if ($tel == "") echo '<li>Вы не ввели... .</li>';
 if ($srok == 0) echo '<li>Вы не ввели... .</li>';
И скрипт выполняется дальше.
А дальше он подключается к базе и вносит в нее данные.
Вопрос:
Как сделать так, чтобы, пройдя до последнего IF, если были ошибки, выводилась снова страница с формой и данные не добавлялись в базу.
Спасибо.
 

Кощей

if(!$needle) die("ooh");
Ну в if только echo засунуть, а и присвоение к примеру переменной $error=TRUE

И делать посылку данных только если $error не TRUE if(!$error){...}
 

BlockOff

Новичок
А можно, например сделать так:
PHP:
if ($razdel == 0) $error[] = "Вы не ввели...";
if ($spec == "") $error[] = "Вы не ввели...";
if ($obraz == 0) $error[] = "Вы не ввели...";
if ($sex == 0) $error[] = "Вы не ввели...";
if ($goroda == 0) $error[] = "Вы не ввели...";
if ($grafik == 0) $error[] = "Вы не ввели...";
if ($goroda == 0) $error[] = "Вы не ввели...";
if ($tel == "") $error[] = "Вы не ввели...";
if ($srok == 0) $error[] = "Вы не ввели...";

if(!empty($error)){
 for($i = 0; $i < count($error); $i++){
  echo "<li>".$error[$i]."</li>";
 }
}else{
 Добавление в БД
}
 

asterisk

Новичок
примерно

PHP:
$debug["FIELD_NAME"] = $_POST["FIELD_NAME"]? 0 : 1;

if(!in_array(1, $debug))
{
 ### запись данных в БД
 ### локейшен
 ### exit
}

... показываем форму редактирования данных ...
мне это решение больше по душе ибо текст ошибок будет храниться в тимплейтах, а не в скрипте.

в случае если может быть несколько типов ошибок на один инпут то вместо
PHP:
!in_array(1, $debug)
используется [m]array_sum[/m] (0 - ошибок нет, > 0 - ошибки есть)

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

kruglov

Новичок
asterisk
Вы в массиве ошибок magic numbers&trade; храните, что ли?

Magic numbers - числа, которые непонятно что значат и откуда берутся.
 

asterisk

Новичок
числа, которые непонятно что значат
на протяжении > года используем единый список соответствий "код" => "тип/уровень ошибки" и все в порядке.

и откуда берутся
при формировании новых форм редактирования данных по дефолту технологу доступен список debug состоящий из пар вида: "formElement => numError".
Что соотвественно позволяет отобразить необходимые системные сообщения.
 

Ярослав

Новичок
а можно так
PHP:
do {
    if (....);
    if (...);
    if (...) {
        $errors[] = '...';
        break;
    }
} while(false);
:)

-~{}~ 03.04.08 16:13:

Непонял сначала топикстартера
В этом вопросе как 1 так и 2 вариант подойдут
я думал что идет серия ифов и если конкретный не срабатывает следующие не имее смысла проверять :)
 

HraKK

Мудак
Команда форума
Ярослав
Слав, это не подойдет потому запишется толька одна ошибка.

-~{}~ 03.04.08 16:17:

Угу)
 

darksmoke

Новичок
PHP:
if ($razdel == 0) $error[] = '<li>Вы не выбрали... .</li>'; 
 if ($spec == "") $error[] = '<li>Вы не ввели... .</li>'; 
 if ($obraz == 0) $error[] = '<li>Вы не выбрали... .</li>';
Второй день мучаюсь. У меня почему-то выводятся эти ошибки через строчку:
*Вы не выбрали... .

*Вы не ввели... .

*Вы не выбрали... .

Пробовал просто echo "<li>test</li><br><li>test</li><br>";

все отлично выводится... . все четко по строчно.

Почему выводится через строку? Спасибо.
 
Сверху