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 :: Как упростить кучу проверок if ?

 PHP.SU

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


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

> Описание: Должно быть как-то просто, но я никак не додумаю.
Doxtor
Отправлено: 06 Мая, 2011 - 17:26:27
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Апр. 2011  


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




if(isset($ident_10) AND isset($ident_11) AND isset($ident_12) AND isset($ident_13)) {$ident_season = $ident_10." OR ".$ident_11." OR ".$ident_12." OR ".$ident_13;}
if(isset($ident_10) AND empty($ident_11) AND empty($ident_12) AND empty($ident_13)) {$ident_season = $ident_10;}
if(empty($ident_10) AND isset($ident_11) AND empty($ident_12) AND empty($ident_13)) {$ident_season = $ident_11;}
if(empty($ident_10) AND empty($ident_11) AND isset($ident_12) AND empty($ident_13)) {$ident_season = $ident_12;}
if(empty($ident_10) AND empty($ident_11) AND empty($ident_12) AND isset($ident_13)) {$ident_season = $ident_13;}

if(isset($ident_10) AND isset($ident_11) AND empty($ident_12) AND empty($ident_13)) {$ident_season = $ident_10." OR ".$ident_11;}
if(isset($ident_10) AND empty($ident_11) AND isset($ident_12) AND empty($ident_13)) {$ident_season = $ident_10." OR ".$ident_12;}
if(isset($ident_10) AND empty($ident_11) AND empty($ident_12) AND isset($ident_13)) {$ident_season = $ident_10." OR ".$ident_13;}
if(empty($ident_10) AND isset($ident_11) AND isset($ident_12) AND empty($ident_13)) {$ident_season = $ident_11." OR ".$ident_12;}
if(empty($ident_10) AND isset($ident_11) AND empty($ident_12) AND isset($ident_13)) {$ident_season = $ident_11." OR ".$ident_13;}
if(empty($ident_10) AND empty($ident_11) AND isset($ident_12) AND isset($ident_13)) {$ident_season = $ident_12." OR ".$ident_13;}

if(empty($ident_10) AND isset($ident_11) AND isset($ident_12) AND isset($ident_13)) {$ident_season = $ident_11." OR ".$ident_12." OR ".$ident_13;}
if(isset($ident_10) AND empty($ident_11) AND isset($ident_12) AND isset($ident_13)) {$ident_season = $ident_10." OR ".$ident_12." OR ".$ident_13;}
if(isset($ident_10) AND isset($ident_11) AND empty($ident_12) AND isset($ident_13)) {$ident_season = $ident_10." OR ".$ident_11." OR ".$ident_13;}
if(isset($ident_10) AND isset($ident_11) AND isset($ident_12) AND empty($ident_13)) {$ident_season = $ident_10." OR ".$ident_11." OR ".$ident_12;}

спасибо.
 
 Top
EuGen Администратор
Отправлено: 06 Мая, 2011 - 17:33:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Лучше рассказать о задаче, приведшей к необходимости таких проверок.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Doxtor
Отправлено: 06 Мая, 2011 - 18:01:19
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Апр. 2011  


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




Попробую.

Есть 2 признака по 4 чекбокса на каждый признак в форме Х.
Нужно сформировать запрос в MySQL типа :
(p1_1 = '1' OR p1_2 = '1' OR p1_3 = '1' OR p1_4 = '1' )
AND (p2_1 = '1' OR p2_2 = '1' OR p2_3 = '1' OR p2_4 = '1' )

и соответственно нужно сформировать переменные p1 и p2
типа : p1 = "p1_1 = '1' OR p1_2 = '1' OR p1_3 = '1' OR p1_4 = '1' "
p2 = "p2_1 = '1' OR p2_2 = '1' OR p2_3 = '1' OR p2_4 = '1' "

проверки которые я "напрограммировал" смотри в первом посте.

Меня, например, смущает тот факт, что при сформированной переменной проверки идут дальше, а там 15 проверок.

Не сильно запутанно объяснил?
 
 Top
Champion Супермодератор
Отправлено: 06 Мая, 2011 - 18:03:35
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




PHP:
скопировать код в буфер обмена
  1. if (!empty($ident_10)) {
  2. $ident_season .= "'$ident_10' OR ";
  3. }
  4. if (!empty($ident_11)) {
  5. $ident_season .= "'$ident_11' OR ";
  6. }
  7. if (!empty($ident_12)) {
  8. $ident_season .= "'$ident_12' OR ";
  9. }
  10. if (!empty($ident_13)) {
  11. $ident_season .= "'$ident_13' OR ";
  12. }
  13. $ident_season = preg_replace('/OR\s+$/', '', $ident_season);


Типа такого?
 
 Top
Doxtor
Отправлено: 06 Мая, 2011 - 18:33:03
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Апр. 2011  


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




Допилил. Работает. Ура!
Сам бы никогда бы не додумал в этом направлении.
Спасибо.
 
 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