我有一个显示3个选项的选择框:option1,option2,option3。当用户点击提交时,然后在$ _POST中我确实选择了值。是否有一种简单的方法可以重新显示选择框,并突出显示所选选项而不在选项中重复?
换句话说,如果选择了option2并单击了提交,则页面应该再次显示,选择了option2,选项1和选项3在下面。
感谢。
答案 0 :(得分:2)
<?php
$arrValues = array(...);
$selectedValue = (isset ($_POST['selectName']) ? $_POST['selectName'] : "");
?>
<select name="selectName">
<?php
for ($i = 0; $i < count($arrValues); $i++)
{
$opts = ($arrValues[$i] == $selectedValue) ? ' selected="selected"': '';
echo '<option value="' . $arrValues[$i] . '"' . $opts . '>' . $arrValues[$i] . '</option>';
}
?>
</select>
答案 1 :(得分:1)
创建这样的选项。
$options = array("optionvalue" => "Option Name");
foreach($options as $value => $name)
{
if(isset($_POST['select_box']))
{
if($_POST['select_box'] == $value)
{
echo '<option selected="selected" value="'.$value.'">'.$name.'</option>';
continue;
}
}
echo '<option value="'.$value.'">'.$name.'</option>';
}
答案 2 :(得分:0)
生成选择框时,使用POST数据(如果可用)选择所选项目(和/或对项目进行排序)。
有点像:
if($_POST["optval"] == $opt) $sel = "selected='selected'"; else $sel = "";
print "<option value='$opt' " . $sel . ">$opt</option>";
当然,您需要验证POST数据是否有效以及它是否存在(isset)。当然假设您从PHP可访问的数据生成选择框,而不是静态定义它。