Php如果声明与&&操作员不工作(逻辑和)

时间:2011-06-07 20:48:18

标签: php validation if-statement logical-operators

代码如下,但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>";

                }
            }


?>

4 个答案:

答案 0 :(得分:4)

如果你真的打算使用&amp;&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的评估值不会为真。

编辑:再想一想,你的表单就像这样,或者不会捕获默认的空值。你决定使用&amp;&amp;或||

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我建议您在案例中使用||代替&&,因为您要检查其中任何一个是否为空,如果两者都为空,则不会:

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

答案 3 :(得分:0)

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

if(!isset($ _ POST ['term'])|| $ _POST ['term'] ==“”||!isset($ _ POST ['when'])|| $ _POST ['when' ] ==“”){                     回声“请填写从左到右的字段”;                     echo“
”;                 } else {

相关问题