Php If оператор с оператором && не работает (логическое А) - PullRequest
0 голосов
/ 08 июня 2011

Код выглядит следующим образом, но оператор 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 ]

4 голосов
/ 08 июня 2011

Если вы действительно хотели использовать &&, а не ||, ваша форма выбора должна быть:

<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 не будет оцениваться как true.

Редактировать: если подумать, ваша форма должна быть такой, иначе пустое значение по умолчанию не будет перехвачено. Wheter вы решили использовать && или ||

1 голос
/ 08 июня 2011
if((!$_POST['term']) || (!$_POST['when'])) {
    echo "Please Fill The Fields Left to Right";
    echo "<br/>";
}
0 голосов
/ 08 июня 2011

Также рассмотрите возможность использования! Isset, что означает, что переменная не установлена.

if (! Isset ($ _ POST ['term']) || $ _POST ['term'] == ""||! isset ($ _ POST ['when']) || $ _POST ['when'] ==" ") {echo" Пожалуйста, заполните поля слева направо ";эхо "";} else {

0 голосов
/ 08 июня 2011

Я бы предложил использовать || вместо && в вашем случае, так как вы хотите проверить, являются ли какие-либо из них пустыми, а не если они оба пусты:

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