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>

avatar yabin
@yabin

15 Kontribusi 0 Poin

Diperbarui 8 tahun yang lalu

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.

avatar cescgie
@cescgie

105 Kontribusi 5 Poin

Dipost 8 tahun yang lalu

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?

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

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

avatar hilmanski
@hilmanski

2665 Kontribusi 2131 Poin

Dipost 8 tahun yang lalu

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);
avatar cescgie
@cescgie

105 Kontribusi 5 Poin

Dipost 8 tahun yang lalu

echo $cek->num_rows keluarnya =0 gan

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

Hmm.. kalo 0 berarti salahnya emang disebelumnya, si m_furniture bukannnya butuh diload juga ya? kaya m_barang

avatar hilmanski
@hilmanski

2665 Kontribusi 2131 Poin

Dipost 8 tahun yang lalu

function __construct(){
        parent::__construct();
		$this->load->library(array('template','form_validation','upload','pagination'));
		$this->load->model('m_furniture');
    }

sudah diload gan di sini

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

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

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

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);
}
avatar cescgie
@cescgie

105 Kontribusi 5 Poin

Dipost 8 tahun yang lalu

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)

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

$idBarang=$this->input->post('jenis');
	foreach($idBarang as $indek=>$idb){
	$cek=$this->m_furniture->cekNama_Id($idb,$nama);
}

saya coba begini berhasil gan.

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 8 tahun yang lalu

Makasih gan udah mau share jawaban benernya, ditandain jadi bener aja, biar pada ngelihat, top!

avatar hilmanski
@hilmanski

2665 Kontribusi 2131 Poin

Dipost 8 tahun yang lalu

Login untuk ikut Jawaban