tagsinput tag multiple bootstrap php jquery codeigniter

php - tag - Muestra Jquery los datos elegidos de la base de datos para actualizar



tags input bootstrap 4 (4)

He elegido jQuery llamado centro medicos en un formulario de inserción, puedo seleccionar todos los datos, seleccionar algunos de los datos. Si hago clic en seleccionar todo aquí, aparece el resultado:

Digamos que selecciono solo 3 elementos y luego los guardo. Ahora quiero editar Cuando la página de edición está cargada quiero tener cargados los 3 elementos que seleccioné:

Y si hago clic en seleccionar todo (Selectionar todo), se muestran el resto de los elementos.

1- Controlador

public function edit_form() { $edit_id= $this->uri->segment(3); $data[''ITEM_EDIT''] = $this->model->get_title_by_id($edit_id); $data[''ITEM_ALL'']= $this->model->get_all_title(); $this->load->view(''view_edit_form'', $data); }

2- Vista

<select class="chosen-select" multiple name="item[]"> <?php foreach($ITEM_ALL as $item_all) { foreach($ITEM_EDIT as $item_edit) { if($title_edit->title== $title_all->title) { echo ''<option value="''.$item_all->title.''" class="''.$item_all->id.''" selected>''.$item_all->title.''</option>''; } else { echo ''<option value="''.$item_all->title.''" class="''.$item_all->id.''" >''.$item_all->title.''</option>''; } } } ?> </select>

3- jQuery

$(".chosen-select").chosen({ no_results_text: "Oops, nothing found : ", })

¿Cómo puedo conseguir esto?


Creo que necesitas actualizar el estado del complemento.

$(function(){ $(".chosen-select").trigger("chosen:updated"); })


@Diasline Este código funciona bien lo he comprobado en mi sistema y reproduje el error que recibió. Este es un código de muestra creado con el elegido. He dado una opción de seleccionar todos en este código haciendo clic en un botón. Aquí está el código.

<html lang="en"> <head> <link rel="stylesheet" href="docsupport/style.css"> <link rel="stylesheet" href="docsupport/prism.css"> <link rel="stylesheet" href="chosen.css"> <button id="select-all">Select All</button><br/> <select data-placeholder="Chosen Example" multiple class="chosen-select" tabindex="18" id="multiple-label-example"> <option value="">American Black Bear</option> <option>Asiatic Black Bear</option> <option selected>Brown Bear</option> <option selected>Giant Panda</option> <option>Sloth Bear</option> <option>Sun Bear</option> <option>Polar Bear</option> <option>Spectacled Bear</option> </select> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.js" type="text/javascript"></script> <script src="chosen.jquery.js" type="text/javascript"></script> <script src="docsupport/prism.js" type="text/javascript" charset="utf-8"></script> <script src="docsupport/init.js" type="text/javascript" charset="utf-8"></script> <script> $(''#select-all'').click(function(){ $(''#multiple-label-example option'').prop(''selected'', true); // Selects all options $("#multiple-label-example").trigger("chosen:updated"); }); </script>

Aquí puede ver en el evento click del botón que he agregado una línea para cambiar todas las opciones seleccionadas y luego una línea debajo de esa para actualizar el elegido. Si no le da la última línea, es decir, si no actualiza la elegida, no funcionará. Solo funcionará después de actualizar el elegido. Espero que esto resuelva tu problema. Por favor, avísame si el problema persiste.


Su fragmento de PHP necesita ser cambiado a algo más parecido a:

<select class="chosen-select" multiple name="title[]"> <?php $selected_titles = array_map(function ($item) { return $item->title; }, $TITLE_EDIT); foreach($TITLE_ALL as $title) { $selected = in_array($title->title, $selected_titles) ? ''selected'' : ''''; echo ''<option value="''.$title->title.''" class="''.$title->id.''" ''.$selected.''>'' .$title->title .''</option>''; } ?> </select>

Más allá de eso, sin una captura de pantalla u otra información, no está claro a qué te refieres cuando dices que no funciona.


Gracias a todos los que me ayudaron con estos problemas. La respuesta de Darshan funciona de hecho, pero no se trata de mi caso porque el seleccionado debe ser de 2 tablas en otro para editarlo. Cuando hago clic en editar, tomo el ID de edición que se encuentra en la segunda tabla.
tabla uno: de ella tomo todos los datos para guardarlos en la base de datos

1- Tabla Centro_medico

id name 1 hosptal a 2 hospital b 3 hospital c 4 hospital d 5 hospital e

Después de seleccionar uno o más en esta tabla, guardamos los datos en la segunda tabla:

2- tabla 2 (hospital)

id id_lind id_centro_medico 1 2 1 2 2 2 3 2 3

la columna id_link es el id pass a url en edit_form

1- controlador

public function edit_form() { $edit_id= $this->uri->segment(3); $data[''ITEM_ALL'']= $this->model->get_all_centro_medico(); $this->load->view(''view_edit_form'', $data); }

2- ver el formulario de edición

<div class="form-group"> <label class="control-label col-sm-4">Centro médico</label> <div class="col-sm-4"> <button type="button" class="chosen-toggle select col-xs-6">Select all</button> <button type="button" class="chosen-toggle deselect col-xs-6">Deselect all</button> <select class="form-control chosen-select" data-placeholder="Comienza a escribir un nombre para filtrar." multiple name="seguro_medico[]" > <?php // I select id_centro_medico equal to edit_id and equal to id of each centro_medico row , // and I compare them foreach($ITEM_ALL as $row) { $id_centro_medico=$this->db->select(''id_lind'')->where(''id_lind'',$edit_id ) ->where(''id_centro_medico'',$row->id) ->get(''hospital'')->row(''id_lind''); if($edit_id==$id_centro_medico){ $selected="selected"; } else { $selected=""; } echo "<option value=''$row->id_sm.'' $selected>$row->title</option>"; } ?> </select> </div> </div>

Por fin no necesito usar:

$(function(){ $(".chosen-select").trigger("chosen:updated"); })