2013-07-29 1 views
0

Извините, я не мог найти более подходящую тему для этой темы.Проверка двух вещей с оператором IF

У меня есть страница с тележкой, и я меняюсь на две вещи ... Код, который я собираюсь показать вам, но я хочу их объединить.

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) 

Код выше проверки, если корзина пуста

if ($_SESSION['User']['AccessLvl'] == null) { *this code check if the user is logged in or not.* 

Мой вопрос У меня есть form, и я хочу, чтобы показать эту форму на странице толькокогда корзина не пустой. If Тележка пуста, форма не должна отображаться. также Если пользователь уже зарегистрирован, форма shouldn't показать.

echo ' <form name="login" action="login.php"> 

</form>'; 

Я устал это

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) { 
} else { 

if ($_SESSION['User']['AccessLvl'] == null) { 
echo ' <form name="login" action="login.php"> 

</form>'; 

} else { 

} 
} 

Резюме SHOULD ONLY, if user is NOT logged in Форма должна показать только тогда, когда они что-то (пункт) в корзине and если пользователь NOT регистрируется его.

SHOULD NOT Если пользователь уже зарегистрирован, форма не должна отображаться, потому что им не нужно просить кого-то войти в систему дважды.

Может кто-нибудь мне помочь. Благодаря

+0

Вы не должны задать новый вопрос, вы должны обновить [последний ] (http://stackoverflow.com/q/17912066/2049063), еще раз я считаю, что вы можете быть более ясны в своем описании, из того, что вы написали здесь, я собираюсь вам просто показать форму, когда пользователь не зашел в систему и тележка не пуста, это должно быть достаточно простым –

+0

@koala_dev «достаточно просто» звучит легко, но его не так для меня. Почему бы вам не отправить свой простой ответ, пожалуйста, –

+0

Прежде чем я это сделаю, я должен быть уверен, что это на самом деле то, что вам нужно. Таким образом, единственным условием, когда должна отображаться форма, является наличие элементов в корзине, и пользователь не вошел в систему? –

ответ

3

Это должно сделать трюк:

if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) { 
    echo ' <form name="login" action="login.php"></form>'; 
} else { 
    ... 
} 

Ниже только объяснение, если-состояния. Это NO действительный синтаксис:

Если карта не пусто>!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) И пользователь не вошел в систему>$_SESSION['User']['AccessLvl'] == null он показывает форму.

+0

это не работает. даже когда у меня есть что-то в тележке, и я 'НЕ' вошел в систему, форма может показать. –

+0

@Sarah на самом деле форма не будет отображаться всякий раз, когда пользователь вошел в систему по вашему запросу –

+0

Я изменил код. Поэтому, когда тележка пуста или пользователь не вошел в систему, она показывает форму. @koala_dev: Когда пользователь вошел в систему, форма не должна отображаться вообще. Это желаемый результат, который она просила. –

1

Хорошо так что по сути Ther две вещи, которые вы хотите проверить в вашем состоянии, то есть у нас есть две переменные:

Variable 1: Корзина пуста

Variable 2: пользователь регистрируется в

Таким образом, мы имеем 4 возможности событий, которые могут произойти, когда кто-то посещает вашу страницу:

  1. корзина пуста и пользователь вошел в систему

  2. корзина пуста и пользователь не вошел в

  3. корзина не пусто и пользователь вошел в систему

  4. корзина не пусто и пользователь не вошел в систему

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

«Форма не должна отображаться, если пользователь вошел в систему уже, а также, если зарегистрированная тележка пользователя пуста »

Итак, в первой части вы не хотите, чтобы форма была зарегистрирована пользователем, а это означает, что параметры 1 и 3 выше не должны отображать форму (мы осталось 2 и 4), то вы говорите, что вам не нужна форма, когда тележка пуста, это означает, что опция 2 - нет, и нам остается вариант 4, вот когда вы хотите, чтобы форма показывала:

Вы хотите форму, когда: корзина не пусто и пользователь не вошел в систему

Перевод с кодом:

корзина НЕ пуста:

!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1)

пользователь не вошел в систему:

$_SESSION['User']['AccessLvl'] == null

Совместимый с AND и вы получите

if (!(!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) && $_SESSION['User']['AccessLvl'] == null) { 
    echo ' <form name="login" action="login.php"></form>'; 
} else { 
    ... 
} 

как @TobiasKun отвечал в его ответ

+0

, насколько я понимаю вопрос, который она хочет видеть только в том случае, если тележка не пуста, и пользователь не вошел в систему. – Perry

+0

@koala_dev по какой-либо причине не работает ... –

+0

Тогда проблема не в логике, а в том, как проверяются условия. Попробуйте ответить @ Jack и сообщите нам, как он не работает, отображает ли он форму, когда вы не хотите или не показывать, когда захотите. –

2

T он первое условие:

if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) 

Может быть сокращен до просто:

if (!empty($_SESSION['cart_array'])) 

Поскольку count() только возвращает значение меньше 1, если массив пуст. Кроме того, empty() также ведет себя как isset() внутри.

Затем, вы можете просто добавить другие условия, как это:

if (!empty($_SESSION['cart_array']) && !isset($_SESSION['User']['AccessLvl'])) { 
    // show form 
} 

isset() не вызывает уведомление при попытке доступа к $_SESSION['User']['AccessLvl'], если он не существует.

Update

Для того, чтобы все это дело проще в обслуживании вы могли бы ввести некоторые вспомогательные функции, например:

function isCartEmpty() 
{ 
    return empty($_SESSION['cart_array']); 
} 

function isLoggedIn() 
{ 
    return isset($_SESSION['User']['AccessLvl']); 
} 

if (!isCartEmpty() && !isLoggedIn()) { 
    // show form 
} 
+0

это тоже работает –

+0

@SarahJames Я обновил ответ, чтобы сделать код более читаемым (и поддерживаемым) :) –

+0

спасибо jack, я буду использовать это, но я не могу дать ответ, потому что кто-то уже ответил на него, но я буду голосуйте за это. : D еще раз спасибо xxx –

Смежные вопросы