Codeigniter如何处理模型中的MultiSelect数据

时间:2017-06-02 16:31:22

标签: php codeigniter model

我有一张包含以下多选代码的表单:

<div class="form-group" style="margin-bottom: 45px;">
                        <label class="control-label" for="non-compatibility"><?php echo _l('invoice_suboption_noncompatible'); ?></label>
                        <select multiple class="selectpicker display-block" data-width="100%" name="non-compatibility[]" id="non-compatibility" title='<?php echo _l('invoice_suboption_noncompatible'); ?>'>
                            <option value=""></option>
                            <?php foreach($suboptions as $suboption){ ?>
                            <option value="<?php echo $suboption['name']; ?>" data-subtext="<?php echo $suboption['plat_option']; ?>"><?php echo $suboption['name']; ?></option>
                            <?php } ?>
                        </select>
                    </div> 

在我的模型中,我想取选择的值并将它们连接成一个由管道'|'分隔的单个字符串然后将该字符串与其余表单数据一起插入到我的数据库中。我不确定如何去做这件事。我如何循环“非兼容性[]”以便我可以执行这些值。表单数据以$ data形式出现在我的模型中。

修改

我的控制器接收帖子并将其保存到$ data,然后调用模型将$ data插入我的数据库。

$data = $this->input->post();
$this->invoice_items_model->add($data);

2 个答案:

答案 0 :(得分:0)

多选数据将仅以内爆格式出现,如果要循环浏览每个选定数据,则将其展开并将其保存在变量中。然后使用foreach循环遍历每个数据。

例如,考虑我在变量$ data中收到所有多个选定数据,然后我会

$partThis = explode(",",$data);
foreach($partThis as $value)
{
    if($value==true)
    {
       //execute your code
    }
}

您还可以在模型中分解$ data以了解数据的接收方式。

答案 1 :(得分:0)

这是通过使用u_mudler所说的,如果有人好奇的话来解决的。在控制器中,我做了以下事情:

$data['non_compatible'] = implode('|', $_POST['non-compatibility']);
unset($data['non-compatibility']);

这会使个人不兼容&#39;表单传递的字段,并将它们连接到由管道分隔的单个字段中。原始&#39;不兼容&#39;然后取消设置$ data中的字段,然后将$ data发送到模型。插入数据库。