代码点火器多选数据库

时间:2018-03-21 17:57:16

标签: database codeigniter select

我试图从数据库填充我的多选项,但它只选择一个值。在数据库中,我的列mselect有两个值:" small,large"。 从_POST填充值也只显示一个值。怎么了?

来自我的模特:

    function get_all() {
    return $this->db->get( 'settings' )->row_array(); //array
}

从我的观点来看:

        $row = $this->lol_model->get_all();

        $m_name = 'multiselect';
        $m_options = array( 'small' => 'Small', 'medium' => 'Medium', 'large' => 'Large', 'xlarge' => 'ExtraLarge', );
        $m_selected = isset( $_POST[ 'multiselect' ] ) ? $_POST[ 'multiselect' ] : $row['mselect'];
        $m_extra = array( 'id' => 'multiselect', 'class' => 'w3-select', );
        echo form_multiselect( $m_name, $m_options, $m_selected, $m_extra ); //name, options, selected, extra

在我的控制器中,我设置了验证,错误和加载视图。

编辑: 我已经找到了在php中使用序列化函数存储数据的方法但是有不同的方法吗? CI set_select函数会有帮助吗?

        $m_selected = isset( $_POST[ 'multiselect' ] ) ? $_POST[ 'multiselect' ] : unserialize($row['mselect']);

在数据库中,我有列"设置"只有一行,但我仍然需要使用foreach循环?

1 个答案:

答案 0 :(得分:1)

使用PHP explode()创建数据库数据数组"小,大":

将视图中的行更改为:

$m_selected = isset( $_POST[ 'multiselect' ] ) ? $_POST[ 'multiselect' ] : array_map('trim',explode(",",$row['mselect']));

explode函数使值的数组类似于

array('small', 'large');

array_map('trim',$array)函数删除数据中的任何空格