Php-If语句与&&;运算符不起作用(逻辑与)


Php If statement with && operator doesnt work (Logical And)

代码如下,但if&语句不起作用。我正在测试下拉框和搜索框是否同时为空,但当我从下拉框中选择某个内容时,它会执行代码,或者我填写搜索框,否则如果两者都为空,它就会工作。

<form action="post.php" method="POST">
                    <select name = "when">
                    <option selected= ""> </option>
                    <option value="breakfast">Breakfast</option>
                    <option value="lunch">Lunch</option>
                    <option value="dinner">Dinner</option>
                    <option value="snacks">Snacks</option>
                    </select> 
                    <input type="text" name="term" value="" id="search"> 
                    <input type="submit" name="submit" value="Submit">

                    <div id="results"></div>
            </form>
<?php
                $term = $_POST['term'];
                $when = $_POST['when'];
                if(($_POST['term'] == "") &&
                    ($_POST['when'] == "")) {
                    echo "Please Fill The Fields Left to Right";
                    echo "<br/>";
                } else {
                    $foods = mysql_query("SELECT * FROM foods WHERE food_name  LIKE '%$term%' ") or die(mysql_error());
                    while($food = mysql_fetch_array($foods)) {
                        $name = $food['food_name'];
                        $foodid = $food['food_ID'];
                        echo "<div class='results'><a href='http://localhost:8888/food/interact.php?add=$name'>" . $name . "</a></div>";
                }
            }

?>

如果您真的想使用&amp;而不是||,您的选择表单需要是:

<select name = "when">
                    <option value="" selected="selected"> </option>
                    <option value="breakfast">Breakfast</option>
                    <option value="lunch">Lunch</option>
                    <option value="dinner">Dinner</option>
                    <option value="snacks">Snacks</option>
</select> 

您没有传递默认选定项的空值,并且&& if clouse不会计算为true。

编辑:仔细想想,你的表单必须是这样的,否则默认的空值将不会被捕获。当你决定使用&amp;或||

我建议在您的情况下使用||而不是&&,因为您希望检查它们中的任何一个是否为空,而不是它们是否都为空:

            if(($_POST['term'] == "") ||
                ($_POST['when'] == "")) {
                echo "Please Fill The Fields Left to Right";
                echo "<br/>";
            }

此外,请考虑使用!isset,这意味着变量未设置。

if(!isset($_POST['term'])||$_POST['term']=="||!isset($_POST['when'])||$_POST['when']=="){echo"请从左到右填充字段";echo"
";}其他{