[英]PHP - remember input selection option
我正在尝试翻译我写给PHP / HMTL的Java“计算器”。 为了使它起作用,必须记住初始选择。 我知道我需要使用$ _POST ['subject']来获取$ cc,但是这给我带来了问题。
我尝试了多个版本,但我担心缺少一些基础知识。 有谁能够向正确的方向推动我?
没有记住选项的代码:
<form action="" method="post">
<legend>Make a selection below</legend>
<br>
Field of interest:<br>
<select name="subject">
<?php
$subjectarray = array("Please select a subject", "Wavelenght", "Radioactive Decay");
foreach ($subjectarray as $cc => $subject) {
echo '<option value="' . $cc . '">' . $subject . '</option>';
}
?>
</select>
使用记住选项版本的代码(显然不起作用);
foreach ($subjectarray as $cc => $subject) {
echo '<option value="' . $cc . '"
if ($_POST['subject'] == $cc) echo 'selected="selected"';>' . $subject . '</option>';
}
再试一次
foreach ($subjectarray as $cc => $subject) {
echo "<option value=\"{$cc}\"";
echo ($_GET['subject'] == $cc) ? 'selected="selected"' :"";
echo ">" . $subject . "</option>";
}
怎么样:
<select name="subject">
<?php
foreach(["Please select a subject", "Wavelenght", "Radioactive Decay"] as $i => $val) {
$sel = empty($_POST['subject']) || $_POST['subject'] != $i ? null : 'selected';
?>
<option <?= $sel ?> value="<?= $i ?>"><?= $val ?></option>
<?php } ?>
</select>
第二种选择是使用$_GET
而您在表单中使用POST
。 它永远都行不通。
第一个看起来会抛出错误... PHP中不是有效的语法。 在PHP中, if
在echo
或print
内则没有。
我想做的是(重写您的foreach):
foreach ($subjectarray as $cc => $subject) {
$selected = $_POST['subject'] == $cc ? ' selected="selected"' : '';
echo '<option value="' . $cc . '"'. $selected .'>' . $subject . '</option>';
}
注意:-您必须使用$ _POST ['subject'],因为在表单标签中method ='POST'。
您需要遍历所有选项。
创建一个包含所有下拉选项的数组,循环遍历,然后与$ _POST []中存储的内容进行比较,然后将所选属性放到要选择的属性上。
<form action="" method="post">
<legend>Make a selection below</legend>
<br>Field of interest:<br>
<select name="subject">
<?php
$subjectarray = array("Please select a subject", "Wavelenght", "Radioactive Decay");
foreach ($subjectarray as $cc => $subject) {
if ($_POST['subject'] == $cc) {
$selected = 'selected';
} else {
$selected = '';
}
echo '<option value="' . $cc . '" '.$selected.'>' . $subject . '</option>';
}
?>
</select>
</form>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.