Postingan lainnya
BUG saat Insert ke database menggunakan perulangan Codeigniter
saya membuat aplikasi dengan codeigniter yang membutuhkan perulangan data dalam proses insertnya, dalam proses insertnya berhasil namun untuk num_rows()>0 tidak berfungsi dimana saya mengecek dari dua field yaitu id_barang dan nama_toko jika yang di input user nama_toko dan id_barang maka akan menampilkan pesan "nama toko dengan id yang sama sudah ada" namun jika di input user nama_toko dan id_barang yang berbeda maka menampilkan pesan "Terkirim", di sini saya mendapatkan bug dimana saat saya input nama toko dan id_barang yang sudah ada di database, aplikasi tetap menyimpannya dan menampilkan pesan "Terkirim", seharusnya menampilkan pesan "nama toko dengan id yang sama sudah ada"
supaya lebih jelas berikut codenya :
controller -> pendaftaran_toko.php
function tambah(){
$this->load->model('m_barang');
$data['barang']=$this->m_barang->getBarang();
$data['judulatas']="Pendataran Toko";
$data['title']="Pendaftaran Toko Furniture";
$this->_set_rules();
if($this->form_validation->run()==true){
$idBarang=$this->input->post('jenis[]');
$nama=$this->input->post('nama_toko');
$cek=$this->m_furniture->cekNama_Id($idBarang,$nama);
if($cek->num_rows()>0){
$data['message']="<h3 class='warning' id='messageBox'>Nama Toko Dengan Jenis Barang Sudah Ada, Ganti.</h3>";
$this->template->display('apps/pendaftaran-toko',$data);
}else{
$config['upload_path']='./assets/img/';
$config['allowed_types']='gif|jpg|png';
$config['max_size']='1000';
$config['max_width']='2000';
$config['max_height']='1024';
$this->upload->initialize($config);
if(!$this->upload->do_upload('gambar')){
$gambar="tidak-ada.jpg";
}else{
$gambar=$this->upload->file_name;
}
$jenis=$this->input->post('jenis');
if(is_array($jenis)){
$jum=0;
foreach($jenis as $indek=>$idbarang){
$jum++;
$h=$jum;
for($i=1;$i<=$h;$i++)
{
$info=array(
'id_barang'=>$idbarang,
//'id_barang'=>$this->input->post('id_barang'),
'nama_toko'=>$this->input->post('nama_toko'),
'nama_pemilik'=>$this->input->post('nama_pemilik'),
'no_siup'=>$this->input->post('surat_ijin'),
'telphone'=>$this->input->post('telp'),
'alamat'=>$this->input->post('alamat'),
'keterangan'=>$this->input->post('keterangan'),
'website'=>$this->input->post('website'),
'lintang'=>$this->input->post('lat'),
'bujur'=>$this->input->post('lng'),
'status'=>$this->input->post('status'),
'foto'=>$gambar);
$this->m_furniture->simpan($info);
break;
}
}
}
$data['message']="<div class='success' id='messageBox'>Data Berhasil di Kirim</div>";
$this->template->display('apps/pendaftaran-toko',$data);
}
}else{
$data['message']="";
$this->template->display('apps/pendaftaran-toko',$data);
}
}
Model -> m_furniture.php
function cekNama_Id($idBarang,$nama){
$this->db->where('id_barang',$idBarang);
$this->db->where('nama_toko',$nama);
return $this->db->get("tb_furniture");
}
views-> pendaftaran-toko.php
<form id="formch" action="" method="post" enctype="multipart/form-data" data-ajax="false">
<ul>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('nama_toko'); ?>
</li>
<li class="ui-field-contain">
<label>Nama Toko :</label>
<input type="text" name="nama_toko" data-clear-btn="true" class="form-control" placeholder="Nama Toko">
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('surat_ijin'); ?>
</li>
<li class="ui-field-contain">
<label>Surat Ijin :</label>
<input type="text" name="surat_ijin" data-clear-btn="true" class="form-control" placeholder="Nomor Surat Ijin Usaha Perdagangan">
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('nama_pemilik'); ?>
</li>
<li class="ui-field-contain">
<label for="text-1">Nama Pemilik :</label>
<input type="text" name="nama_pemilik" data-clear-btn="true" class="form-control" placeholder="Nama Pemilik">
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('telp'); ?>
</li>
<li class="ui-field-contain">
<label for="text-1">No. Telphone :</label>
<input type="text" name="telp" data-clear-btn="true" class="form-control" placeholder="Nomor Telphone">
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('jenis[]'); ?>
</li>
<li class="ui-field-contain">
<label>Jenis Barang :</label>
<fieldset data-role="controlgroup"data-type="horizontal">
<?php $i=1; foreach($barang as $br){
echo "<input type='checkbox' name='jenis[$i]' id='jenis[$i]' value='$br[id_barang]'/>";
echo "<label for='jenis[$i]'>$br[nama_barang]</label>";
$i++;
}
?>
</fieldset>
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('alamat'); ?>
</li>
<li class="ui-field-contain">
<label>Alamat :</label>
<textarea name="alamat" class="form-control"></textarea>
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('keterangan'); ?>
</li>
<li class="ui-field-contain">
<label>Keterangan :</label>
<textarea name="keterangan" class="form-control"></textarea>
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('website'); ?>
</li>
<li class="ui-field-contain">
<label>Website :</label>
<input type="text" name="website" data-clear-btn="true" class="form-control" value="http://">
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('lat'); ?>
</li>
<li class="ui-field-contain">
<label>Lintang :</label>
<input type="text" name='lat' id='lat' class="form-control" readonly>
</li>
<li class="ui-field-contain">
<label></label>
<?php echo form_error('lng'); ?>
</li>
<li class="ui-field-contain">
<label>Bujur :</label>
<input type="text" name='lng' id='lng' class="form-control" readonly>
</li>
<li class="ui-field-contain">
<label>Foto :</label>
<input type="file" name="gambar" class="form-control">
</li>
<input type="hidden" name="status" class="form-control" value="0">
<fieldset class="ui-grid-a">
<input type="submit" value="Kirim" data-theme="b" data-icon="check"/>
<input type="reset" value="Kosongkan" data-theme="b" data-icon="recycle"/>
<!--<input type="button" id="tombolCheck" value="Check All" onClick="Check();"/>-->
</fieldset>
</ul>
</form>
12 Jawaban:
Ane agak kurang paham logic-nya di sini.
function cekNama_Id($idBarang,$nama){
$this->db->where('id_barang',$idBarang);
$this->db->where('nama_toko',$nama);
return $this->db->get("tb_furniture");
}
Apapun parameter yg ada di dalamnya, fungsi ini tetap me-return query yang menghasilkan semua informasi dari tabel "tb_furniture" (CMIIW). Jadi tidak ada pengecekan apakah barang dengan id & nama terlampir sudah eksis di database.
mungkin logika saya di function cekNama_Id($idBarang,$nama) pada model, dan $cek=$this->m_furniture->cekNama_Id($idBarang,$nama); if($cek->num_rows()>0) pada controlller jika data pada databasenya sudah ada maka statement $cek ini di jalankan untuk menampilkan pesan "Data Sudah Ada", bagaimana ya gan supaya bisa ngecek dua field?
model m_furniture nya udah di load gan?
$this->load->model('m_furniture');
Coba di cek kalo di echo $cek->num_rows keluarnya apa ? kalo datanya kembar
Kalo liat dokumentasinya di sini https://codeigniter.com/user_guide/database/, harusnya seperti ini bisa ya
$array = array('idBarang' => $idBarang, 'nama' => $nama);
$this->db->where($array);
Hmm.. kalo 0 berarti salahnya emang disebelumnya, si m_furniture bukannnya butuh diload juga ya? kaya m_barang
function __construct(){
parent::__construct();
$this->load->library(array('template','form_validation','upload','pagination'));
$this->load->model('m_furniture');
}
sudah diload gan di sini
function cekNama_Id($idBarang,$nama){
$array = array('id_barang' => $idBarang, 'nama_toko' => $nama);
$this->db->where($array);
return $this->db->get("tb_furniture");
}
beginikan gan implementasinya, sudah ku coba tapi datanya tetap terkirim
Langsung direturn ke where clause-nya aja
function cekNama_Id($idBarang,$nama){
$array = array('id_barang' => $idBarang, 'nama_toko' => $nama);
return $this->db->where($array);
}
error gan Fatal error: Call to undefined method CI_DB_mysql_driver::num_rows() in D:\xampp\htdocs\skripsi\application\controllers\pendaftaran_toko.php on line 28
line 28 itu codenya ini gan if($cek->num_rows()>0)
$idBarang=$this->input->post('jenis');
foreach($idBarang as $indek=>$idb){
$cek=$this->m_furniture->cekNama_Id($idb,$nama);
}
saya coba begini berhasil gan.
Makasih gan udah mau share jawaban benernya, ditandain jadi bener aja, biar pada ngelihat, top!