Form validation differs untuk nama field array

dalam form untuk input penduduk secara banyak sekaligus saya menggunakan perulangan for dan untuk nama field dalam form menggunakan contoh ktp[]. saya menggunakan codeigniter dan menggunakan form validation. dalam dokumentasi codeigniter ada fungsi form validation differs[nama_field] yang berfungsi untuk membedakan inputan user antara field1 dengan field2.

karena saya menggunakan perulangan dan nama field saya array maka code differs diatas tidak bisa digunakan.,

rancanganya ketika perulangan for dan input banyak data sekaligus, jika ada input no ktp yang sama makan akan muncul error

nah saya masih mencari solusi agar differs diatas bisa digunakan berikut adalah coding saya. harap bantuanya. .

controller :

function input_penduduk()
{
  if ($this->session->userdata('masuk')=='kadus')
     {
	$penduduk = new stdClass();
	$penduduk->no_ktp = null;
	$penduduk->no_kk = null;
	$penduduk->nama = null;
	$penduduk->tanggal_lahir = null;
        $penduduk->jenis_kelamin = null;
	$penduduk->umur = null;
	$penduduk->status = null;
        $penduduk->statuskeluarga = null;
	$penduduk->kepalakk = null;
	$penduduk->alamat = null;
	$penduduk->pekerjaan = null;
	$penduduk->rt = null;

        $this->form_validation->set_rules('ktp[]', 'Nomor
        KTP','required|trim|numeric|is_unique[penduduk.no_ktp]|differs[ktp[]]');

        $this->form_validation->set_rules('kk[]', 'Nomor KK', 'required|trim|numeric');
        $this->form_validation->set_rules('nama[]', 'Nama', 'required|trim');
        $this->form_validation->set_rules('ttl[]', 'Tanggal Lahir', 'required|trim');
        $this->form_validation->set_rules('kelamin[]', 'Kelamin', 'required|trim');
        $this->form_validation->set_rules('umur[]', 'Umur', 'required|trim');
        $this->form_validation->set_rules('status[]', 'Status', 'required|trim');
        $this->form_validation->set_rules('statuskeluarga[]', 'Status Keluarga',
        'required|trim');

        $this->form_validation->set_rules('statuskk[]', 'Status Kepala Keluarga',
        'required|trim');
        $this->form_validation->set_rules('alamat[]', 'Alamat', 'required|trim');
        $this->form_validation->set_rules('pekerjaan[]', 'Pekerjaan', 'required|trim');
        $this->form_validation->set_rules('rt[]', 'RT', 'required|trim');

        if ($this->form_validation->run()==false)
         {
           $data = array(
           'page' => 'Tambah',
           'row' => $penduduk
           );

           $isi['judul'] = 'Tambah Penduduk';
           $this->load->view('template/header', $isi);
           $this->load->view('penduduk/v_input', $data);
           $this->load->view('template/footer');
         } else
           {
	     $post = $this->input->post();
	     $this->m_penduduk->add($post);
           }
} else
   {
	redirect('home');
   }
}

view :

  <form action="" method="POST">
   <label for="total">data yang ingin dimasukan</label>
   <input type="number" name="total" id="total" required>
   <button class="btn btn-success">Tambah</button>
  </form>
  <br><br><br>

<form id="demo-form2" data-parsley-validate class="form-horizontal form-label-left" action="<?php echo base_url().'penduduk/penduduk/input_penduduk' ?>" method="POST" >
  <?php if (isset($_POST['total'])): //jika tombol total ditekan?>
   <?php for ($i=1; $i<=$_POST['total']; $i++) { ?>
    <br><br>
    <div class="form-group">
      <label class="control-label col-md-3 col-sm-3 col-xs-12">No KTP</label>
      <div class="col-md-9 col-sm-9 col-xs-9">
       <input type="number" name="ktp[]"  class="form-control" value="<?= set_value('ktp[]'); ?>">
        <?php if (isset($_POST['total'])):?>
          <?php else:?>
           <font color="red"><?= form_error('ktp[]'); ?></font>
          <?php endif;?>
       <span aria-hidden="true"></span>
      </div>
     </div>
avatar nurkhab
@nurkhab

1 Kontribusi 0 Poin

Diperbarui 3 tahun yang lalu

1 Jawaban:

<div>Gunakan callback, untuk mengecek<br><br></div><pre>$this-&gt;form_validation-&gt;set_rules('ktp[]', 'Nomor KTP','required|trim|numeric|is_unique[penduduk.no_ktp]|callback_ktp_unique');</pre><div><br><br></div><pre>function public ktp_unique() { $array = $this-&gt;input-&gt;post('ktp');// get value $this-&gt;form_validation-&gt;set_message('ktp_unique', '%s tidak boleh sama. ');

    if(count(array_unique($array))!==count($array))
    {
        // Array has duplicates
        return FALSE;
    }
    else
    {
        // Array does not have duplicates
        return TRUE;
    }
}&lt;/pre&gt;&lt;div&gt;&lt;br&gt;Semoga membantu :)&lt;br&gt;&lt;br&gt;&lt;/div&gt;
avatar arya045
@arya045

1 Kontribusi 0 Poin

Dipost 3 tahun yang lalu

Login untuk ikut Jawaban