Я такой конструкцией проверяю правильность ввода, но она какая-то ИМХО кривоватоя,что

olegking

Guest
Я такой конструкцией проверяю правильность ввода, но она какая-то ИМХО кривоватоя,что

Как лучше делать ? А то я пытаюсь писать компактный код, а хотелосб бы ещё выводить в чем именно ошибка.

if (( (!$row_id_user=mysql_fetch_array(mysql_query("SELECT id FROM `xtex_users` WHERE login='$login_ban'")) && ($login_ban!='')) || ( ($ip_ban!='') && (!$row_ip_user=mysql_fetch_array(mysql_query("SELECT id FROM `xtex_ban` WHERE ip_ban='$ip_ban'")) && ((preg_match("/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\$/i",$ip_ban))) ) ) print ("БАН ДОБАВЛЕН В БАЗУ<BR><BR>"; else print (“Бан не добавлен”);
 

Demiurg

Guest
надо писать не компактный код а читаемый, все условия в один if писать не обязательно.
 

olegking

Guest
а как лучше написать? так я по идее проверяю всё одним ИФом
 

gfd

Guest
fixxxer

:) Смеялся очень сильно :)

olegking

Как ты можешь определить в чем именно ошибка, если проверяешь все одним if`ом? Эхо в него попытаться еще засунуть?:)

-~{}~ 14.04.05 14:06:

PHP:
if (eval("Весь скрипт в одну строку")) echo 'Круто';
:)
 

olegking

Guest
Млин, а может кто-нить скажет как лучше проверять? Кто и как бы делал?
 

Фанат

oncle terrible
Команда форума
проверять что?
и зачем?
либо сформулируй задачу - тогда убери код свой ужасный.
либо вынеси на суд общества код - но тогда приведи его в человеческий вид.

выполняй.
 

itprog

Cruftsman
Проще разделить все на несколько if-ов и заносить все ошибки в массив, а потом просто распечатать..
 

olegking

Guest
ну если разбить этот иф, на кучу вложенных, то тогда будет как-то криво выглядеть
 

fixxxer

К.О.
Партнер клуба
а у тебя ровно выглядит, ага?

ps. hint: preg_match("/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\$/i",$ip_ban) -> -1 != ip2long($ip_ban)
 

itprog

Cruftsman
на кучу вложенных
А зачем так?
Пример:
if(strlen($age)>3) $error[] = "Возвраст должен содержать не более 3 символов";
if(is_numeric($age)) $error[] = "Возвраст должен содержать только цифры";
 

fixxxer

К.О.
Партнер клуба
ну, тут если первое условие false остальные проверки не нужны.
я обычно делаю так
do {
if (!condition1) break;
if (!condition2) break;
...
} while(false);
 

neko

tеam neko
fixxxer
иногда имеет смысл сообщить пользователю о всех ошибках, которые он допустил, а не только о первой
на самом деле, почти всегда это имеет смысл
 

fixxxer

К.О.
Партнер клуба
если для второй операции не нужен результат первой - да.
я имел в виду вариант по типу
mysql_query
mysql_fetch_array
.......
ну или если есть несколько проверок одного и того же поля, не вижу смысла делать несколько проверок при обломе уже в первой
 

Фанат

oncle terrible
Команда форума
olegking
ну если разбить этот иф, на кучу вложенных, то тогда будет как-то криво выглядеть
КРИВО выгладит у тебй СЕЙЧАС.
это во-первых.
во-вторых, вложенные ифы тут нафиг не нужны.
 

olegking

Guest
Вот эта конструкция меня привлекла:

if(strlen($age)>3) $error[] = "Возвраст должен содержать не более 3 символов";
if(is_numeric($age)) $error[] = "Возвраст должен содержать только цифры";

Я правильно понял, что надо потом проверять, если есть if (isset($error[0])){...} else print и выводить ошибки. ИМХО это наиболее подходящий вариант, кто и что скажет ?
 
Сверху