我有<select>
同时有多个允许的选择。我希望在表单提交后保留所有选定的值。怎么做?
我试过了followig,但这只适用于一个选项......
<select multiple name="example" method="POST" action="<? echo $_SERVER['PHP_SELF']?>">
<option value="optA" <?php if ($_POST['example'] === "optA"){echo 'selected="selected"';} ?>>Option A</option>
<option value="optB" <?php if ($_POST['example'] === "optB"){echo 'selected="selected"';} ?>>Option B</option>
</select>
预计以下内容始终会返回最新选择的选项:
<?php if (isset($_POST['example'])){echo $_POST["example"];} ?>
那我怎样才能实现目标呢?很多thx提前! :)
答案 0 :(得分:2)
使用数组作为POST变量,如下所示:
<select multiple name="example[]">
// options
</select>
并像这样检索它们:
print_r($_POST['example']);
我建议您将选项值和名称存储在数组中,以便更容易处理:
$options = array(
array(
'value' => 0,
'name' => 'A'
),
array(
'value' => 1,
'name' => 'B'
),
array(
'value' => 2,
'name' => 'C'
),
array(
'value' => 3,
'name' => 'D'
)
);
然后只需使用foreach
循环创建您的选择选项,并检查当前选项是否在您的post变量中:
<select multiple name="example[]">
<?php foreach ($options as $option) { ?>
<option value="<?php echo $option['value']; ?>"<?php echo (isset($_POST['example']) && in_array($option['value'], $_POST['example'])) ? ' selected="selected"' : ''; ?>><?php echo $option['name']; ?></option>
<?php } ?>
</select>