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


Jawaban

Gunakan callback, untuk mengecek

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


function public ktp_unique()
    {
        $array = $this->input->post('ktp');// get value
        $this->form_validation->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;
        }
    }

Semoga membantu :)

avatar arya045

@arya045

1 Kontribusi 0 Poin


Login untuk gabung berdiskusi
premium logo tube

Hey, sedang ada diskon premium untuk akses semua kelas. Lihat di sini