2017-10-25 8 views
8

Ich habe jQuery gewählt centro medicos in einem Einfügeformular, ich kann alle Daten auswählen, wählen Sie einige der Daten. Wenn ich alle hier wählen klicken Sie ist das Ergebnis:Anzeige Jquery gewählten Daten aus der Datenbank zu aktualisieren [Codigniter]

enter image description here

Lassen Sie uns sagen, dass ich nur drei Elemente auswählen und dann speichere ich. Jetzt möchte ich bearbeiten. Wenn die Edit-Seite geladen wird, möchte ich die drei Elemente, die ich geladen ausgewählt:

enter image description here

Und wenn ich bei der Auswahl anklicken, um alle (Selectionar todo) werden die restlichen Elemente angezeigt.

1- Regler

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- Ansicht

<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 : ", 
}) 

Wie kann ich das erreichen?

+0

Verwenden Sie das [jquery gewählten Plug-in] (http s: //harvesthq.github.io/chosen/)? Ich denke, Sie müssen 'gewählt: aktualisiert' wie '$ ('. Ausgewählt-wählen'). Trigger ('ausgewählt: aktualisiert');' tl; dr; [Diese Antwort.] (Https://stackoverflow.com/a/9161115/3585500) – ourmandave

+0

Das, was ich benutze Was ist mit der Anzeige von Daten durch ID? – Diasline

+0

Immer noch kann mir jemand helfen? – Diasline

Antwort

0

Danke an jeden, der mir bei diesen Problemen geholfen hat. Die Antwort von Darshan funktioniert in der Tat, aber es ist nicht in Bezug auf meinen Fall, weil die Auswahl von 2 Tabellen in anderen sein sollte, um es zu bearbeiten. Wenn ich auf Bearbeiten klicke, nehme ich die Editier-ID, die in der zweiten Tabelle gefunden wird.
Tabelle ein: von packe es mir alle Daten in der Datenbank

1- Tabelle Centro_medico

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

Nach der Wahl eines oder mehr in dieser Tabelle zu speichern, wir Daten in der zweiten Tabelle speichern:

2- Tabelle 2 (Krankenhaus)

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

die id_link Spalte ist die ID-Pass in der edit_form

1- Controller

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- Ansicht bearbeiten Form

<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> 

Endlich ich brauche nicht URL zu Verwenden Sie:

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

Ich dachte, dass dein Code funktioniert, außer für den Select all part ... – Darshan

1

Sie braucht PHP-Schnipsel zu etwas mehr wie geändert werden:

<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> 

Darüber hinaus, ohne einen Screenshot oder andere Informationen, ist es unklar, was Sie meinen, wenn Sie sagen, dass es nicht funktioniert.

+0

Ich habe meine Frage aktualisiert, noch eine Antwort. Niemand braucht mein Kopfgeld! – Diasline

+1

steve's Code sollte funktionieren - das Einzige, was geändert werden sollte, ist die Zeile '$ selected = in_array ($ title, $ selected_titles)? 'ausgewählt': ''; 'zu ' $ selected = in_array ($ title-> title, $ selected_titles)? 'selected': ''; ' – sintakonte

1

Ich denke, dass Sie Plugin-Status aktualisieren müssen.

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

@Diasline Dieser Code funktioniert gut, ich in meinem System überprüft haben und reproduziert den Fehler Sie. Dies ist ein Beispielcode, der mit dem ausgewählten Code erstellt wurde. Ich habe eine Auswahl alle in diesem Code durch Klicken auf eine Schaltfläche angegeben. Hier ist der Code durchgegangen.

<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> 

Hier können Sie auf das Click-Ereignis der Schaltfläche sehe ich eine Linie zu Änderung hinzugefügt haben alle Optionen wie ausgewählt und dann eine Zeile darunter, dass zu Aktualisierung der gewählte. Wenn Sie nicht die letzte Zeile angeben, d. H., Wenn Sie nicht die Aktualisierung der ausgewählten aktualisieren, wird es nicht funktionieren. Es funktioniert nur nach der Aktualisierung der gewählten.Hoffnung das löst Ihr Problem. Bitte lassen Sie mich wissen, wenn das Problem weiterhin besteht.

Verwandte Themen