0

I have looping field in a form, I want to insert this data to the same field in a mysql database using codeigniter.

mysql field:

id AUTO_INCREMENT
passenger_title
passenger_name

this is my view:

      <?php 
      for ($i=1; $i <= $jml['jml_penumpang'] ; $i++) {?>
        <h4>Data Penumpang <?= $i ?></h4><hr>

        <div class="row">
          <div class="col-md-3">
            <select id="title_penumpang_<?= $i ?>" class="form-control" required>
              <option value="Tuan">Tuan</option>
              <option value="Nyonya">Nyonya</option>
              <option value="Nona">Nona</option>
            </select>
          </div>
          <div class="col-md-9">
            <input type="text" name="nama_penumpang_<?= $i ?>" class="form-control" placeholder="Nama sesuai KTP/SIM" autocomplete="off" required>
          </div>
        </div>

        <br><br>
      <?php }
       ?>

I tried this code in my controller but it still does not work:

    $penumpang = array(
        'client_id' => $this->input->post('client_id'), 
        'title' => $this->input->post('title_penumpang_1'),
        'title' => $this->input->post('title_penumpang_2'),
        'title' => $this->input->post('title_penumpang_3'),
        'title' => $this->input->post('title_penumpang_4'),
        'title' => $this->input->post('title_penumpang_5'),
        'title' => $this->input->post('title_penumpang_6'),
        'title' => $this->input->post('title_penumpang_7'),
        'nama' => $this->input->post('nama_penumpang_1'),
        'nama' => $this->input->post('nama_penumpang_2'),
        'nama' => $this->input->post('nama_penumpang_3'),
        'nama' => $this->input->post('nama_penumpang_4'),
        'nama' => $this->input->post('nama_penumpang_5'),
        'nama' => $this->input->post('nama_penumpang_6'),
        'nama' => $this->input->post('nama_penumpang_7'),
    );

    $q = $this->Front_model->insert('tbl_penumpang', $penumpang);
    if ($q) {
        echo "berhasil insert data";
    }

I thought about looping it in my controller but don't know how to code it. Please help.

ProgrammerPer
  • 1,125
  • 1
  • 11
  • 26
  • I'm not sure what are you trying to do here but take a look at [insert_batch](https://www.codeigniter.com/userguide3/database/query_builder.html?highlight=insert_batch#CI_DB_query_builder::insert_batch) – Sherif Salah Jan 05 '19 at 18:18
  • i try to add value from dynamic field – Mangkok Biru Jan 05 '19 at 18:35
  • 1
    SOLVED! i tried [this](https://stackoverflow.com/questions/51319095/how-to-insert-dynamic-data-in-codeigniter) – Mangkok Biru Jan 05 '19 at 18:43
  • Possible duplicate of [How to insert dynamic data in Codeigniter?](https://stackoverflow.com/questions/51319095/how-to-insert-dynamic-data-in-codeigniter) – Vickel Jan 06 '19 at 00:06

2 Answers2

0

Add an hidden input in view after your for loop

      <?php 
          for ($i=1; $i <= $jml['jml_penumpang'] ; $i++) {?>
            <h4>Data Penumpang <?= $i ?></h4><hr>

            <div class="row">
              <div class="col-md-3">
                <select id="title_penumpang_<?= $i ?>" class="form-control" required>
                  <option value="Tuan">Tuan</option>
                  <option value="Nyonya">Nyonya</option>
                  <option value="Nona">Nona</option>
                </select>
              </div>
              <div class="col-md-9">
                <input type="text" name="nama_penumpang_<?= $i ?>" class="form-control" placeholder="Nama sesuai KTP/SIM" autocomplete="off" required>
              </div>
            </div>

            <br><br>
          <?php }
           ?>

<input type='hidden' value='<?= $i ?>' name=''total_count>

at controller

$penumpang = array();

              for ($i=1; $i <= $this->input->post('total_count') ; $i++){
$penumpang[] = array(
        'client_id' => $this->input->post('client_id'), 
'title' => $this->input->post('title_penumpang_'.$i),
'nama' => $this->input->post('nama_penumpang_'.$i),
);
}

then pass the $penumpang to your model and insert batch because you have multidimensional array forexample

model simple insert statement :

$this->db->insert('table_name', $penumpang); 

model statement you need to use is :

$this->db->insert_batch('table_name', $penumpang);
Masih Ansari
  • 467
  • 3
  • 9
0

try this in your controller.

$title=$this->input->post('title_penumpang');
$nama=$this->input->post('nama_penumpang');
$penumpang=array(
 'title'=implode(",", $title),
 'nama'=implode(",", $nama)

);
PHP Geek
  • 3,949
  • 1
  • 16
  • 32