Как я могу вставить несколько данных в свою базу данных, используя плагин Select2 с codeigniter? - PullRequest
0 голосов
/ 02 марта 2020

Я создаю систему php с использованием codeigniter, я хочу зарегистрировать несколько данных в таблице, используя множественный выбор и плагин 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;
		}


	}
?>

1 Ответ

0 голосов
/ 02 марта 2020

select with 'multiple' возвращает только одно значение для именованного ввода при отправке (или при использовании element.value).

Поскольку вы уже используете jquery, вы можете использовать $(element).val(), чтобы получить полный список. (Или в ванильном l oop через все опции с 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>
...