Postingan lainnya
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>
1 Jawaban:
<div>Gunakan callback, untuk mengecek<br><br></div><pre>$this->form_validation->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->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;
}
}</pre><div><br>Semoga membantu :)<br><br></div>