2

我有一个表格,当需要对数据进行一些编辑时会显示该表格。此表单包含多个选择框字段,即

<select name="multiple" multiple>
        <option value="1">asd</option>
        <option value="2">asaad</option>
        <option value="3">aslan</option>
</select>

现在,当我来到这个表单时,我在各自的字段中填充了每个现有值,但我没有填充这个多选框。在 db 中,其各自的值以 csv 格式存储,如2,3,4.

现在我如何使用这些csv并重新填充csv各自的多个选择框?

4

3 回答 3

2
<?
$csvString = "1,3";

?>
<select name="multiple" multiple>
    <option value="1" <?=strpos($csvString ,'1')!== false?'selected="selected"':''?> >Option 1</option>
    <option value="2" <?=strpos($csvString ,'2')!== false?'selected="selected"':''?> >Option 2</option>
    <option value="3" <?=strpos($csvString ,'3')!== false?'selected="selected"':''?> >Option 3</option>
</select>
于 2013-10-19T21:15:49.307 回答
1

我假设您为选择框迭代生成 HTML $options。然后,您只需检查每次迭代是否存在当前值$csv并将selected参数添加到选项中。

$selection = explode(',', $csv);
foreach ($options as $value => $name) {
    $selected = in_array($value, $selection) ? ' selected="selected"' : '';
    echo '<option value="'. $value .'"'. $selected .'>'. $name .'</option>';
}
于 2010-12-06T15:31:09.430 回答
1

这可能会有所帮助,但可能有更好的方法......

$csvString = "1,3";
$options = explode(",", $csvString);
foreach($options as $val) {
    ${"opt".$val} = "selected=\"selected\"";
}
?>
<select ...>
    <option value="1" <?php echo $opt1 ?> >Option 1</option>
    <option value="2" <?php echo $opt2 ?> >Option 2</option>
    <option value="3" <?php echo $opt3 ?> >Option 3</option>
</select>
于 2010-12-06T15:33:14.773 回答