Codeigniter - Обновить несколько строк с помощью Select2 - PullRequest
0 голосов
/ 29 октября 2018

При вводе 2 значений атрибут collection_id и 2 значений атрибут nama_driver и в базе данных успешно вводятся 2 строки

ВХОД -> РЕЗУЛЬТАТ


но если ввести 2 значения collect_id и 1 значение nama_driver , то в базу данных будет введена только 1 строка ..

ВХОД -> РЕЗУЛЬТАТ

если я введу 2 или более collect_id и 1 nama_driver, только 1 строка в базе данных. Я хочу 2 строки или более в базе данных с тем же значением nama_driver

Вот мой КОНТРОЛЛЕР:

$collecting_id = $this->input->post('collecting_id');
$nama_driver = $this->input->post('nama_driver');

$data = array();
for ($i = 0; $i < count($collecting_id); $i++) {
    $data[] = array(
        'nama_driver' => $nama_driver[$i],
        'collecting_id' => $collecting_id[$i]    
    );
    }

$this->db->update_batch('process', $data, 'collecting_id');

{
$this->session->set_flashdata('msg','<strong>Data Deliveries Berhasil Diupdate.');
redirect('delivery/deliver_list'); 
}

А вот мой ВИД:

 <div class="col-md-6 col-sm-6 col-xs-12">
    <div class="form-group">
    <label>Paket</label>

<select class="js-example-basic-multiple form-control" name="collecting_id[]" multiple="multiple">
<?php 
   if(@$paket_incoming) :
      foreach ($paket_incoming as $row) :
      ?>
<option value="<?php echo $row->collecting_id; ?>"><?php echo $row->collecting_id; ?></option>
<?php
   endforeach;
      endif;
      ?>
</select>
</div></div>

<div class="col-md-6 col-sm-6 col-xs-12">
<div class="form-group">
<label>Nama Driver</label>
<select class="js-example-basic-multiple form-control" name="nama_driver[]" multiple="multiple">
<?php 
   if(@$driver) :
      foreach ($driver as $row) :
         ?>
<option value="<?php echo $row->nama; ?>"><?php echo $row->nama; ?></option>
<?php
   endforeach;
      endif;
      ?>
</select>
</div></div>

<div class="col-md-12">
<center><button type="submit" class="btn btn-primary">Simpan</button>
                    <a href="<?php echo base_url();?>delivery/delivery_list"  class="btn btn-default">Batal</a></center>
                    </div></div>

1 Ответ

0 голосов
/ 29 октября 2018

Вам просто нужно изменить это

 for ($i = 0; $i < count($collecting_id); $i++) {
    $data[] = array(
        'nama_driver' => $nama_driver[$i],
        'collecting_id' => $collecting_id[$i]    
    );
    }

к этому

 for ($i = 0; $i < count($collecting_id); $i++) {
           $tempdata = array(
        'nama_driver' => $nama_driver[$i],
        'collecting_id' => $collecting_id[$i]    
        );
        array_push($data, $tempdata);
        }

использовать array_push. формат вашего массива был не таким, как ожидалось от CI.
тогда вы можете использовать: $this->db->update_batch('process', $data, 'collecting_id');

...