Два условия в PHP-выражении if - PullRequest
2 голосов
/ 17 мая 2011

Это, вероятно, так же просто, как и получается, но я новичок в PHP, и это не моя сильная сторона, поэтому, пожалуйста, потерпите меня!Я застрял!

У меня есть форма с ответом «да» или «нет» в качестве переключателя.Если пользователь нажимает yes, ему предоставляются два дополнительных переключателя: a и b.Если бы они нажали no, они были бы представлены с переключателями c и d.

Кстати, у меня есть некоторый JavaScript, скрывающий DIV a и b и c и d DIV до тех пор, пока не будет нажата yes или no, просто чтобы сохранить порядок.no DIV, содержащий c и d, исчезает и заменяется на yes DIV при нажатии yes после no, и наоборот.Это все работает нормально.

Моя проблема с PHP.Это маловероятно, но если пользователь нажимает no, делает выбор, скажем d, затем решает изменить свой ответ на yes, затем выбирает a, сценарий по-прежнему возвращает d.Я предполагаю, что это потому, что d все еще выбрано и появляется последним в потоке HTML.

То, что я хотел бы сделать, чтобы мой сценарий игнорировал c и d, даже если они были выбраны, если выбрано yes.Точно так же я бы хотел, чтобы a и b игнорировались, если выбран no.

HTML выглядит примерно так:

<label for="yes_or_no">Yes or No?</label>
  <input type="radio" name="yes_or_no" id="yes" value="yes" />
  <label for="yes">Yes</label>
  <input type="radio" name="yes_or_no" id="no" value="no" />
  <label for="no">No</label>

<div id="yes">
  <label for="a_or_b" id="a_or_b">A or B?</label>
    <input type="radio" name="a_or_b" id="a" value="a" />
    <label for="a">A</label>
    <input type="radio" name="a_or_b" id="b" value="b" />
    <label for="b">B</label>
</div>

<div id="no">
  <label for="c_or_d" id="c_or_d">C or D?</label>
    <input type="radio" name="c_or_d" id="c" value="c" />
    <label for="c">C</label>
    <input type="radio" name="c_or_d" id="d" value="d" />
    <label for="d">D</label>
</div>

Мой PHP выглядит так, ноон не работает должным образом:

$yes_or_no = $_REQUEST["yes_or_no"] ;
$a_or_b = $_REQUEST["a_or_b"] ;
$c_or_d = $_REQUEST["c_or_d"] ;

if ($yes_or_no="yes" && $a_or_b!="") $result="$a_or_b";
if ($yes_or_no="no" && $c_or_d!="") $result="$c_or_d";
$feedback = "$result";

Переменная $feedback отправляется мне по электронной почте.

Надеюсь, это имеет смысл!Спасибо за вашу помощь!

Мартин.

Ответы [ 4 ]

5 голосов
/ 17 мая 2011

Используйте == для проверки равенства:

if ($yes_or_no == "yes" && $a_or_b != "") $result="$a_or_b";
if ($yes_or_no == "no" && $c_or_d != "") $result="$c_or_d";

Я не уверен, что это полностью решит вашу проблему, но, возможно, это поможет вам начать.

О, и вы можете сделать $result = $a_or_b вместо $result="$a_or_b", но это ни на что не повлияет.

0 голосов
/ 17 мая 2011

Вы можете использовать js для очистки любого выбора a, а b выбрано no, и то же самое происходит, когда пользователь выбирает yes.

Также у вас есть некоторые ошибки в вашем php, о которых упоминали другие.*

0 голосов
/ 17 мая 2011
if ($yes_or_no="yes" && $a_or_b!="") $result="$a_or_b";

Проблема с $yes_or_no = "yes". Это оператор присваивания , а не оператор сравнения . Он говорит: «установите $yes_or_no на yes, затем верните true» (это не совсем так, но это близко). Вам нужен оператор, который говорит "return true, если $yes_or_no равно yes".

Замените = на ==, и ваш код должен работать.

(Существует еще одна причина, по которой ваш код здесь нарушен - = имеет более низкий приоритет , чем &&, тогда как == имеет более высокий приоритет, но это не самая большая проблема.)

0 голосов
/ 17 мая 2011

Вы в настоящее время устанавливаете переменную $yes_or_no на значение в if.Используйте == вместо =.Один - это задание, другой - сравнение.

...