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
Форумы портала PHP.SU :: Версия для печати :: Правила для оператора условие
Форумы портала PHP.SU » PHP » Программирование на PHP » Правила для оператора условие

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

1. dembi - 24 Ноября, 2009 - 15:42:41 - перейти к сообщению
Есть одна проблема с оператором условия.
Я получаю значение статуса через переменную $_POST[‘status’]
Если оно равно «Все» должно выполняться одно условие иначе выполняется другое.

Вот код:

CODE (text):
скопировать код в буфер обмена
  1. $status = $_POST['status'];
  2. if ((!empty($status)) && ($status == "Все")) {
  3.         echo $query_report = $query_report;
  4. }
  5. if ((!empty($status)) && ($status != "Все")) {
  6.         echo $query_report = $query_report." and ms.status = '$status'";
  7. }
  8.  

У меня же почему-то, если переменная $status получает значение «Все», все равно выполняется это условие:

CODE (text):
скопировать код в буфер обмена
  1. if ((!empty($status)) && ($status != "Все")) {
  2.         echo $query_report = $query_report." and ms.status = '$status'";
  3. }


Что я делаю не так???

Заранее спасибо за помощь.
(Добавление)
Решил это следующим путем:

присвоил переменой статус следующее значение:



и Оператору условия прописал:

CODE (text):
скопировать код в буфер обмена
  1.  
  2.    if ($state == $all) {
  3.    $query_report = $query_report;
  4. }
  5. if ($state != $all) {
  6.    $query_report = $query_report." and ms.status = '$state'";
  7. }


Теперь все работает.
2. Nestor - 24 Ноября, 2009 - 16:15:39 - перейти к сообщению
Может быть проблема с кодировкой.

var_dump($status); что дал?
3. Мелкий - 24 Ноября, 2009 - 16:17:15 - перейти к сообщению
Потому что так работает условие &&, для вашего случая нужно использовать AND. Т.е.
PHP:
скопировать код в буфер обмена
  1. if ((!empty($status)) AND ($status == "Все")) {


Почему так: http://php.su/learnphp/operators/?logical
4. JustUserR - 24 Ноября, 2009 - 16:58:50 - перейти к сообщению
Мелкий пишет:
Потому что так работает условие &&, для вашего случая нужно использовать AND.
PHP.SU пишет:
Смысл двух разных вариантов для операторов "and" и "or" в том, что они работают с различными приоритетами
Помоему у автора вообзе оба условия выделены в дополнительные скобки и приоритете здесь несущественен
Nestor пишет:
Может быть проблема с кодировкой.
Вот это уже больше может быть похоже на истину
dembi пишет:
У меня же почему-то, если переменная $status получает значение «Все», все равно выполняется это условие
А само первое условия то выполялось
Вообще станны еще две вещи - то была переменная $status а стала $state (Вы не допустили ошибку ?) и еще можно было попробовать заменить == на === (Может быть возвращался true так ак одна из них была не строка)

 

Powered by ExBB FM 1.0 RC1