我正在使用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>
然后将代码保留为值。尝试恢复让我们检查