Diskon 80% terbatas! Masukkan kupon "merdeka" di kelas apa saja

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 9 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

106 Kontribusi 5 Poin

Dipost 9 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 9 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

2713 Kontribusi 2145 Poin

Dipost 9 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

106 Kontribusi 5 Poin

Dipost 9 tahun yang lalu

echo $cek->num_rows keluarnya =0 gan

avatar yabin
@yabin

15 Kontribusi 0 Poin

Dipost 9 tahun yang lalu

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

avatar hilmanski
@hilmanski

2713 Kontribusi 2145 Poin

Dipost 9 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 9 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 9 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

106 Kontribusi 5 Poin

Dipost 9 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 9 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 9 tahun yang lalu

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

avatar hilmanski
@hilmanski

2713 Kontribusi 2145 Poin

Dipost 9 tahun yang lalu

Login untuk ikut Jawaban