繁体   English   中英

如何记住一个选择标签中的多个选择的选项?

[英]How to remember multiple selected options in a select-tag?

我有一个同时具有多个允许选择的<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"];} ?>

那我怎样才能实现我的目标呢? 提前很多! :)

使用数组作为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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM