使用POST数据重新填充选择框(php)

时间:2009-08-17 21:57:50

标签: php select

我有一个显示3个选项的选择框:option1,option2,option3。当用户点击提交时,然后在$ _POST中我确实选择了值。是否有一种简单的方法可以重新显示选择框,并突出显示所选选项而不在选项中重复?

换句话说,如果选择了option2并单击了提交,则页面应该再次显示,选择了option2,选项1和选项3在下面。

感谢。

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可访问的数据生成选择框,而不是静态定义它。