2013-01-05 51 views
2

我有一些php代碼用於根據從某個HTML發送的值運行不同的mySQL查詢。從HTML發送的值是當前的一天,我得到了使用:帶有&&和||的PHP if/elseif邏輯

<?php $day = date("w"); ?> 

當我使用:

<?php echo $day; ?> 

返回6,這是它應該做的(因爲它是星期六),所以我可以確認我的HTML/php將正確的信息發送給我的腳本。

現在在我的腳本中,我有一個很大的mySQL查詢列表if/elseif與& &和||條件。

這裏是前兩種的一些的例子:

if(($noshow == 1) && ($day != 5 || $day != 6 || $day != 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+5 WHERE ID=" . $id) or die(mysql_error()); 
} 
elseif(($noshow == 1) && ($day == 5 || $day == 6 || $day == 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+7 WHERE ID=" . $id) or die(mysql_error()); 
} 

變量$ NOSHOW從我的HTML文件發送,以及它與1的值複選框的形式(如選中)。所以我需要做的是根據當天的情況來運行查詢。在第一個語句中,如果html中的框被選中,並且不是星期五,星期六或星期天(5,6,0),我希望它更新點數等於當前點加5。

下一個陳述應該做與第一個相同的事情,但只有在星期五,星期六或星期天。該腳本繼續進行了大約10個其他語句,用於我所做的各種複選框/選項。

所以我遇到的問題是,它只能在運行的第一條語句,即使有一天是6(我如上所述)

我已經在圈子裏已經持續了大約兩個小時,這個問題這讓我瘋狂。我目前的想法是,我的if語句的語法不正確。

回答

4

非常簡單。你的第一個陳述將工作,如果日= 6因爲你說

IF DAY IS NOT EQUAL TO 5 
OR 
DAY IS NOT EQUAL TO 6 

因此,當日不等於5,它將工作!而你的第二個陳述有elseif所以它在第一次不會工作。如果你希望你的第一個語句不是當一天的工作= 6,那麼你必須告訴它

IF DAY IS NOT EQUAL TO 5 
AND 
DAY IS NOT EQUAL TO 6 

因此,一個簡單的更新將

if(($noshow == 1) && ($day != 5 && $day != 6 && $day != 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+5 WHERE ID=" . $id) or die(mysql_error()); 
} 
elseif(($noshow == 1) && ($day == 5 || $day == 6 || $day == 0)){ 
$run = mysql_query("UPDATE employee_data SET points=points+7 WHERE ID=" . $id) or die(mysql_error()); 
} 

提示:

每當你很困惑你的IF條件如何工作,請翻譯& &和||英文和閱讀。例如你的第一個語句將被解讀爲

IF NO SHOW IS 1 AND (DAY IS NOT EQUAL TO 5 OR DAY IS NOT EQUAL TO 6 OR DAY IS NOT EQUAL TO 0) 

閱讀這種方式將使其更明顯的是,這種說法將是真實的,即使一天6

+1

謝謝你的幫助,你的幫助非常大! –

+0

隨時!乾杯:) –

0

如果$一天!= 5,它將返回true,因爲您正在使用||,請嘗試使用& &以確保所有測試都是必需的。