if statement - PHP if/elseif logic with && and ||


if statement - PHP if/elseif logic with && and ||

我有一些php代码运行基于从一些HTML发送的值不同的mySQL查询。从HTML发送的值是我使用

获取的当前日期
<?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语句语法不正确。

非常简单。如果day = 6,你的第一个语句将会工作,因为你输入了

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

所以当day不等于5时,它将工作!你的第二个语句有elseif所以当第一次做的时候它不会工作。如果你想让第一个语句在day = 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天,这个语句也是正确的

如果$day != 5将返回true,因为您正在使用||,请尝试使用&&确保所有测试都是必需的