代码点火器从数据库中进行多选择

问题描述 投票:0回答:1

我正在尝试从数据库填充我的多选,但它只选择一个值。在数据库中,我的 mselect 列有两个值:“小,大”。 从 _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 循环吗?

php database codeigniter select
1个回答
1
投票

使用 PHP

explode()
制作数据库数据“小、大”的数组:

将视图中的行更改为:

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

explode 函数创建一个值数组,类似于

array('small', 'large');

并且

array_map('trim',$array)
函数会删除数据中的所有空格

© www.soinside.com 2019 - 2024. All rights reserved.