多选仅保存1个选定选项。 (最后一个选中)

时间:2016-04-04 13:54:35

标签: php mysqli joomla-extensions

我是新来的,所以如果我对我的问题做了任何不正确的事情,请温柔地"也许就我出错的地方提供指导。

根据标题,我正在尝试添加一个"多选#34;将字段转换为Joomla中的扩展,其中选项在管理员面板的项目视图中选择。 一切似乎都正确显示,但是当我保存项目时,所选项中唯一保存的选项是最后选择的选项。

以下是我在项目视图中使用的代码。

<?php if (count($this->multiselects) > 0): ?>
                    <?php foreach ($this->multiselects as $field): ?>
                        <li><label for="additional_multiselect[<?php echo $field->id ?>]"><?php echo $field->name ?></label>
                            <select multiple="multiple" name="additional_multiselect[<?php echo $field->id ?>]">
                                <option value=""></option>
                                <?php
                                $values = explode(PHP_EOL, $field->values);
                                foreach ($values as $v)
                                {
                                    ?>
                                    <option value="<?php echo $v ?>"<?php if (trim($v) == trim($this->multiselect_values[$field->id])) echo 'selected="selected"' ?>><?php echo $v ?></option>
                                    <?php
                                }
                                ?>
                            </select>
                        </li>
                        <?php endforeach; ?>
                    <?php endif; ?>

我尝试在名称后添加[],但这似乎不起作用。我也尝试从字段的&gt; id部分删除它们并在最后添加它们,但这似乎不起作用。

有人能找到我出错的地方并指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

如果你想要多个值,你必须在输入名称的末尾使用[],否则你只会收到最后一个值。

<select multiple="multiple" name="additional_multiselect[]">

获得值后,可以使用print_r($ _ POST);或print_r($ _ GET); (取决于您的表单类型)以验证您已收到多个输入。然后,当您保存它们时,请确保您没有重叠每个项目,而是保存所有项目。 (您还没有显示保存代码)

答案 1 :(得分:1)

在您的选择名称中添加另一个[]

<select 
    multiple="multiple" 
    name="additional_multiselect[<?php echo $field->id ?>][]"
>

表单提交后,请检查您的$_POST数组:

print_r($_POST);