这可能很简单,但我是PHP的新手,这不是我的强项,所以请耐心等待!我被卡住了!
我有一个表单设置为是或否答案作为单选按钮。如果用户点击yes
,则会向他们显示另外两个单选按钮选项:a
和b
。如果他们点击no
,他们就会看到单选按钮c
和d
。
顺便说一句,我有一些JavaScript隐藏了a
和b
DIV以及c
和d
DIV,直到yes
或{{1点击,只是为了保持整洁。包含no
和no
的{{1}} DIV会消失,并在c
之后点击d
时被yes
DIV替换,反之亦然。这一切都很好。
我的问题在于PHP。这不太可能,但如果用户点击yes
,做出选择,说no
,然后决定将答案更改为no
,然后选择d
,脚本仍然返回yes
。我想这是因为a
仍然被选中并出现在HTML流程的最后。
如果选择d
,我希望我的脚本执行的操作是忽略d
和c
,即使它们已被选中。同样,如果选择d
,我希望忽略yes
和a
。
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>
发送给我。
我希望这是有道理的!谢谢你的帮助!
马丁。
答案 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中也有一些其他人提到的错误。