Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
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!