我正在使用codeigniter创建一个php系统,我想使用多选和select2插件在一个表中注册几个数据。问题是,在我选择的数据中,只有最后一个选择的数据是在我的数据库中注册的数据。我该如何解决?
这就是表单。
$('.select2').select2({
tokenSeparators: [','],
tags: true,
multiple: true,
maximumSelectionLength: 20,
placeholder: "Select maximum 20 items"
});
<div class="form-group">
<label class="form-label" for="multiple-basic">
grupos
</label>
<select class="select2 form-control" name="grupos[]" multiple="multiple" id="multiple-basic">
<optgroup label="GRUPOS REGISTRADOS">
<?php foreach ($group_data as $k => $v): ?>
<option value="<?php echo $v['id_grupo'] ?>"><?php echo strtoupper($v['nombre_grupo']) ?></option>
<?php endforeach ?>
</optgroup>
</select>
</div>
我的控制器
<?php
public function createSingle(){
$response= array('success' => false, 'messages' => array());
$oidVal = implode(",", $this->input->post('grupos'));
$data = array(
'id_usuario'=> $this->session->userdata('id_usuario'),
'id_grupo'=> $oidVal);
$create = $this->model_users->createSingle($data);
if($create== true) {
$response['success'] = true;
$response['messages'] = 'DATOS REGISTRADOS:';
}else {
$response['success'] = false;
$response['messages'] = 'ERROR AL REGISTRAR LOS DATOS';
}
echo json_encode($response);
}
?>
我的模型
<?php
public function createSingle($data='')
{
if($data) {
$create = $this->db->insert('registro_grupos_usuarios', $data);
//$user_id = $this->db->insert_id();
return ($create == true) ? true : false;
}
}
?>
select with'multiple'在提交时(或使用element.value
时(仅为命名输入返回一个值。
由于您已经在使用jquery,因此可以使用$(element).val()
来获取完整列表。(或者在所有选项的香草循环中,element.selected
为true(
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<select id="dropdown" multiple>
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
<option value="five">five</option>
</select>
</body>
<script>
document.getElementById('dropdown').addEventListener('change', function(event) {
// eg I have selected 'two' and 'three'
console.log(event.target.value); // two
console.log($(event.target).val()); // Array [ "two", "three" ]
})
</script>
</html>