如何记住选择标签中的多个选定选项?
问题描述:
我有一个<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提前! :)
答
使用数组作为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
循环,并检查当前选项是否在您的帖子变量中:
<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>
+0
感谢这很好地工作!我改变了PHP为''。你认为这是最好的方式吗? – Alex
为什么使用“===”?你应该使用“==” – FareedMN
尝试执行'print_r($ _ POST ['example'])'而不是回显 – Tomanow
更改'name =“example”'为'name =“example []”'并执行'print_r($ _POST [示例])'。 – Apb