2

これはおそらく簡単なことですが、私は PHP の初心者であり、得意ではないので、ご容赦ください。私は立ち往生しています!

はいまたはいいえの回答をラジオ ボタンとして設定したフォームがあります。ユーザーがクリックするyesと、さらに 2 つのラジオ ボタンの選択肢が表示されます:ab. クリックした場合はno、ラジオ ボタンcとが表示されますd

ちなみに、すっきりさせるために、またはがクリックされるまでaand bDIV とcand DIV を非表示にする JavaScriptがあります。を含む DIV が消え、の後に をクリックするとDIV に置き換えられます。逆の場合も同様です。それはすべてうまくいっています。dyesnonocdyesyesno

私の問題はPHPにあります。可能性は低いですが、ユーザーがnoを押して選択し、たとえばを選択dし、回答を に変更して をyes選択aした場合でも、スクリプトは を返しますddこれは、まだ選択されていて、HTML フローの最後に表示されるためだと思います。

スクリプトで実行したいのは、選択されている場合でも、選択されている場合でもc無視することです。同様に、 が選択されている場合は無視されたいと思います。dyesabno

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

4 に答える 4

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"、それはここでは何にも影響しません。

于 2011-05-17T18:07:01.153 に答える
0
if ($yes_or_no="yes" && $a_or_b!="") $result="$a_or_b";

問題は$yes_or_no = "yes". それは代入演算子であり、比較演算子ではありません。「に設定$yes_or_noしてからyes返すtrue」と言われています(これは正確ではありませんが、近いです)。「等しいtrue場合に返す」という演算子が必要です。$yes_or_noyes

に置き換える===、コードが機能するはずです。

(コードがここで壊れている別の理由があります。優先順位は よりも=低く、優先順位&&は高くなりますが、それ==は最大の問題ではありません。)

于 2011-05-17T18:09:18.247 に答える
0

現在、変数を の値に設定しています。の代わりに使用します。1 つは代入、もう 1 つは比較です。$yes_or_noif===

于 2011-05-17T18:07:59.950 に答える
0

js を使用して、a と b の選択をクリアできます。no が選択されている場合と、ユーザーが yes を選択した場合も同じです。

また、他の人が言及したphpにいくつかのバグがあります。

于 2011-05-17T18:12:38.863 に答える