PHP'if'语句中的两个条件

时间:2011-05-17 18:04:30

标签: php html forms if-statement multiple-conditions

这可能很简单,但我是PHP的新手,这不是我的强项,所以请耐心等待!我被卡住了!

我有一个表单设置为是或否答案作为单选按钮。如果用户点击yes,则会向他们显示另外两个单选按钮选项:ab。如果他们点击no,他们就会看到单选按钮cd

顺便说一句,我有一些JavaScript隐藏了ab DIV以及cd DIV,直到yes或{{1点击,只是为了保持整洁。包含nono的{​​{1}} DIV会消失,并在c之后点击d时被yes DIV替换,反之亦然。这一切都很好。

我的问题在于PHP。这不太可能,但如果用户点击yes,做出选择,说no,然后决定将答案更改为no,然后选择d,脚本仍然返回yes。我想这是因为a仍然被选中并出现在HTML流程的最后。

如果选择d,我希望我的脚本执行的操作是忽略dc,即使它们已被选中。同样,如果选择d,我希望忽略yesa

HTML看起来像这样:

b

我的PHP看起来像这样,但它无法正常工作:

no

然后通过电子邮件将变量<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> 发送给我。

我希望这是有道理的!谢谢你的帮助!

马丁。

4 个答案:

答案 0 :(得分:5)

使用==测试相等性:

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",但这不会对此产生任何影响。

答案 1 :(得分:0)

您目前将变量$yes_or_no 设置为if中的值。使用==代替=。一个是作业,另一个是比较。

答案 2 :(得分:0)

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

问题在于$yes_or_no = "yes"。那是assignment operator,而不是comparison operator。它说“将$yes_or_no设置为yes,然后返回true”(这不完全是它,但它已经接近了)。您希望运算符在“true等于$yes_or_no”时显示“返回yes”。

=替换为==,您的代码应该有效。

(还有另一个原因导致您的代码被破坏 - =的{​​{3}}低于&&,而==的优先级更高,但这不是最大的问题。)

答案 3 :(得分:0)

您可以使用js清除任何a的选择,b选择no,当用户选择yes时使用相同的内容。

你的php中也有一些其他人提到的错误。