2013-07-29 58 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“足够简单”听起来很容易,但它不是那么asy对我来说。你为什么不张贴你的简单答案请 –

+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

好了,所以在本质疗法是你想在你的病情,检查两件事情,那就是我们有两个变量:

变量1:车是空的

变量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

与结合,你会得到

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'],如果它不存在时不提高的通知。

更新

为了使这整个事情更容易维护,你可以介绍一些辅助功能,例如:

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

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

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

这个工程,以及 –

+0

@SarahJames我已经更新了答案,使代码更易读(和维护):) –

+0

感谢插孔,我就用这个,但我不能给ü的答案,因为别人已经回答了这个问题,但我会为它投票。 :d再次感谢的xxx –