Frage

Das ist wahrscheinlich so einfach wie es nur geht, aber ich bin neu in PHP und es ist nicht meine Stärke, also bitte haben Sie Geduld mit mir!Ich stecke fest!

Ich habe ein Formular mit einer Ja- oder Nein-Antwort als Optionsfeld eingerichtet.Wenn der Benutzer klickt yes ihnen werden zwei weitere Optionsfelder angezeigt: a und b.Wenn sie geklickt hätten no sie wären mit Optionsfeldern dargestellt worden c und d.

Übrigens habe ich etwas JavaScript, das das versteckt a und b DIV und die c und d DIV bis entweder yes oder no wird angeklickt, nur um Ordnung zu halten.Der no DIV, enthaltend c und d verschwindet und wird durch die ersetzt yes DIV wann yes wird danach geklickt no, und umgekehrt.Das funktioniert alles gut.

Mein Problem ist mit dem PHP.Es ist nicht wahrscheinlich, aber wenn der Benutzer trifft no, trifft eine Wahl, sagen wir d, dann beschließt, ihre Antwort zu ändern yes, wählen a, gibt das Skript immer noch zurück d.Ich denke, das liegt daran d ist immer noch ausgewählt und erscheint zuletzt im HTML-Fluss.

Ich möchte, dass mein Skript ignoriert c und d, auch wenn sie ausgewählt wurden, wenn yes ausgewählt ist.Ähnlich würde ich gerne a und b ignoriert werden, wenn no ausgewählt ist.

Ein HTML sieht ungefähr so aus:

<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>

Mein PHP sieht so aus, aber es funktioniert nicht richtig:

$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";

Variabel $feedback wird dann an mich gemailt.

Ich hoffe, das macht Sinn!Danke für deine Hilfe!

Martin.

War es hilfreich?

Lösung

Verwenden == zum Testen der Gleichheit:

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

Ich bin mir nicht sicher, ob das Ihr Problem vollständig lösen wird, aber vielleicht wird es Ihnen den Einstieg erleichtern.

Oh, und du kannst es tun $result = $a_or_b statt $result="$a_or_b", aber das wird hier nichts beeinflussen.

Andere Tipps

Sie sind derzeit Einstellung variabel $yes_or_no auf den Wert in der if.Verwenden == statt =.Das eine ist Zuordnung, das andere ist Vergleich.

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

Das Problem ist mit $yes_or_no = "yes".Das ist die Zuweisungsoperator, nicht die Vergleichsoperator.Es sagt "Set $yes_or_no zu yes, dann kehren Sie zurück true" (das ist es nicht genau, aber es ist nah dran).Sie möchten einen Operator, der "return" sagt true wenn $yes_or_no ist gleich yes".

Ersetzen = mit == und dein Code sollte funktionieren.

(Es gibt einen anderen Grund, warum Ihr Code hier kaputt ist.) -- = hat niedriger Vorrang als &&, während == hat höhere Priorität, aber das ist nicht das größte Problem.)

Sie können js verwenden, um jede Auswahl von a und b zu löschen, wenn nein ausgewählt ist und dasselbe gilt, wenn der Benutzer Ja auswählt.

Außerdem haben Sie einige Fehler in Ihrem PHP, die andere erwähnt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top