CodeIgniter:多选择始终将一项始终选择



我正在使用jQuery插件进行mutliselect选项。所有内容都可以正常工作,但只有一个问题是将至少一项选择。

如果我选择了多个项目,但是当我试图删除所有选定的项目并保存表单以存储数据库中时,它是通过保留至少一个项目来恢复的。

编辑:我添加了完整的代码。问题是没有保留正确选择的项目,最后保留了一个项目。

控制器

public function general()
{
    $this->data['title'] = admin_page_heading('glyphicon glyphicon-cog', 'title_settings');
    // check if form submited
    if(!empty($_POST)):     
    // get form fields name and value automatic
    foreach($_POST as $key => $value):      
        // convert result in array
        $data[] = $key; 
    endforeach;
    endif;
    //echo '<pre>', print_r($data), '</pre>';
    $rules = $this->settings_model->rules;
    $this->form_validation->set_rules($rules);
    // Process the form
    if($this->form_validation->run() === TRUE):
    $data = $this->settings_model->array_from_post($data);
    // add or update value
    foreach($data as $name => $value):
        // check if option is in record
        if(get_option($name)):
        // update the optoin
        update_option($name, $value);
        else:
        // add new row if option is not in record
        add_option($name, $value);
        endif;  
    endforeach;
    endif;
    // load general settings view
    $this->load->view('settings/general', $this->data);
}

添加选项

function add_option($name,$value)
{           
    $CI =& get_instance();
    $CI->load->database();
    $query=$CI->db->select('*')->from('site_options')->where('option_name',$name)->get();
    //option already exists
    if($query->num_rows() > 0)
    return false;
    $data_type='text';
    if(is_array($value))
    {
    $data_type='array';
    $value=serialize($value);
    }
    elseif(is_object($value))
    {
    $data_type='object';
    $value=serialize($value);
    }
    $data=array(
    'option_name'=>$name,
    'option_value'=>$value,
    'option_type'=>$data_type,
    );
    $CI->db->insert('site_options',$data);
}

更新选项

function update_option($name,$value)
{
    $CI =& get_instance();
    $CI->load->database();
    $data_type='text';
    if(is_array($value))
    {
    $data_type='array';
    $value=serialize($value);
    }
    elseif(is_object($value))
    {
    $data_type='object';
    $value=serialize($value);
    }
    $data=array(
    'option_name'=>$name,
    'option_value'=>$value,
    'option_type'=>$data_type,
    );
    $query=$CI->db->select('*')->from('site_options')->where('option_name',$name)->get();
    //if option already exists then update else insert new
    if($query->num_rows() < 1) return $CI->db->insert('site_options',$data);
    else          return $CI->db->update('site_options',$data,array('option_name'=>$name));
} 

功能填充多电选择

function get_multiselect($name, $items = array(), $id=false)
{
    echo '<select multiple="multiple" id="'.$id.'" name="'.$name.'[]">';
    $item = $items;
    $selects = get_option($name);
    for($i=0; $i<count($item); $i++):
        $selected = (in_array($item[$i], $selects) ? 'selected="selected"' : NULL);
        echo '<option value="'.$item[$i].'" '.$selected.'>'.$item[$i].'</option>';
    endfor;
    echo '</select>';
}

我发现这是由于序列化数据而发生的,该数据需要至少一个数组中的一项

如果我从数据库中删除了数组项,则会出现错误。因此,请想知道如何检查是否没有选择项目,而不是插入null或空白(字符串)。

可能是数据库中不允许在字段中允许的空。

<option value=""> ----Select Options ----- </option> 

然后将代码保留为值。尝试恢复让我们检查

最新更新