Ceci est probablement aussi simple que possible, mais je suis novice en PHP et ce n'est pas mon point fort, alors s'il vous plait, faites attention! Je suis coincé!Deux conditions dans une instruction PHP 'if'
J'ai un formulaire mis en place avec une réponse oui ou non comme un bouton radio. Si l'utilisateur clique sur yes
, deux autres choix de bouton radio s'affichent: a
et b
. S'ils avaient cliqué sur no
, ils auraient été présentés avec les boutons radio c
et d
.
Soit dit en passant, j'ai un peu de JavaScript cacher la a
et b
DIV et la c
et d
DIV jusqu'à ce yes
ou no
est cliquée, juste pour garder les choses en ordre. Le no
DIV, contenant c
et d
disparaît et est remplacé par le yes
DIV lorsque yes
est cliquée après no
, et vice versa. Tout fonctionne bien.
Mon problème est avec le PHP. Il est peu probable, mais si l'utilisateur tape no
, fait un choix, disons d
, puis décide de changer leur réponse à yes
, puis sélectionne a
, le script renvoie toujours d
. Je suppose que c'est parce que d
est toujours sélectionné et apparaît en dernier dans le flux HTML. Ce que je voudrais que mon script fasse est ignorer c
et d
, même s'ils ont été sélectionnés, si yes
est sélectionné. De même, j'aimerais que a
et b
soient ignorés si no
est sélectionné.
Un HTML ressemble à ceci:
<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>
Mon PHP ressemble à ceci, mais il ne fonctionne pas correctement:
$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";
La $feedback
variable est alors m'a envoyé un courriel.
J'espère que cela a du sens! Merci de votre aide!
Martin.
Cela semble être exactement son problème. Dans cette situation, lorsque vous utilisez un single = dans une instruction IF, vous définissez la valeur de cette variable et elle teste si cette variable n'est pas fausse. Dans cette situation, l'instruction IF réussira toujours. L'utilisation d'un == le réglerait définitivement. De plus, vous n'avez pas besoin de mettre $ result en guillemets doubles. $ feedback = $ résultat fonctionnera très bien. – WhiskeyTangoFoxtrot
@Foxtrot, oui. C'est définitivement un problème. Je voulais simplement dire que je n'ai pas analysé la logique pour voir si elle est correcte même si l'erreur est corrigée. De plus, il est possible que ni if 'soit 'true' et' $ result' ne soit jamais défini. Est-ce qu'il gère cette affaire? Je ne sais pas. – Matthew
vient de faire l'ajustement à l'opérateur égal et ça fonctionne comme un charme! Je vais prendre le pouls de cette alouette PHP si ça me tue (ce qui est tout à fait possible!). En attendant, merci à tout le monde (@konforce, @Foxtrot, @joey, @lonesomeday, et tout le monde) qui m'aide! Martin. – Martin