2013-07-29 71 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 –