Melooping sintaks sql di codeigniter

saya ingin nnya apakah nilai didalam foreach dapat direturn ke file model.php ? karena saya ingin menampilkan data berdasarkan kondisi yang ada di foreach atau dilooping. Untuk sementara yang saya pakai sekarang menggunakan teknik Procedural Mysqli. kelemahannya saya jadi membuat file koneksi baru lagi. karena saya tidak ingin mengubah 2 file koneksi jika saya ganti database. adakah saran dari teman teman disini ? contoh kode nya :

<table class="table table-bordered table-hover">

		<?php
		 foreach ($ketDistinct as $keterangan) :
         ?>
          	<tr>
          		<td>
          			<b>Keterangan Tindakan</b> : <?= $keterangan['ket'];?>
          		</td>
          	</tr>
          	<tr>
           		<th>Nama Dokter</th>
           		<th>Total 1</th>
           		<th>Total 2</th>
           </tr>
           <?php
           $con = mysqli_connect("localhost","root","","database_db") or die;
           $sql = mysqli_query($con, "SELECT DISTINCT(bagi_jasa_tb.nama_dok_dpjp), dokter_tb.* from bagi_jasa_tb, dokter_tb WHERE bagi_jasa_tb.status=1 and dokter_tb.id=bagi_jasa_tb.nama_dok_dpjp and bagi_jasa_tb.ket = $keterangan[id_ket] order by bagi_jasa_tb.no ASC");
           while($r=mysqli_fetch_assoc($sql)){
           ?>
           <tr>
                  <td><?=$r['nama_dokter'];?></td>

                  	<?php
                  	$total1 = mysqli_query($con, "SELECT bagi_jasa_tb.*, dokter_tb.* from bagi_jasa_tb, dokter_tb WHERE bagi_jasa_tb.status=1 and dokter_tb.id = bagi_jasa_tb.nama_dok_dpjp and dokter_tb.nama_dokter = '$r[nama_dokter]'and bagi_jasa_tb.ket = $keterangan[id_ket] order by bagi_jasa_tb.no ASC");

                  	 while($r=mysqli_fetch_assoc($total1)){
                  	$kons1 = $r['dana'] * $r['persen_kons1'] / 100;
					$kons2 = $r['dana'] * $r['persen_kons2'] / 100;
					$kons3 = $r['dana'] * $r['persen_kons3'] / 100;
					$dok = $r['dana'] - $kons1 - $kons2 - $kons3;
                  	?>
                  <td>Rp. <?=number_format($dok,0,"",",")?></td>
              	<td></td>
           </tr>

              <?php

              if($r['nama_dok_kons1'] != ""){
              	foreach ($dokter as $nama_dokkons1) :
                  if($r['nama_dok_kons1'] == $nama_dokkons1['id']){ ?>
                  	<tr>
                  		<td><?=$nama_dokkons1['nama_dokter'];?></td>
                  		<td></td>
                  		<td>Rp. <?=number_format($kons1,0,"",",")?></td>
                  	</tr>
                  <?php }
              	endforeach;
              }

              	if($r['nama_dok_kons2'] != ""){
                  	foreach ($dokter as $nama_dok_kons2) :
	                  	if($r['nama_dok_kons2'] == $nama_dok_kons2['id']){ ?>
	                  		<tr>
	                  			<td><?=$nama_dok_kons2['nama_dokter'];?></td>
	                  			<td></td>
                  				<td>Rp. <?=number_format($kons2,0,"",",")?></td>
	                  		</tr>
	                  <?php }
	              	endforeach;
	              }

                 if($r['nama_dok_kons3'] != ""){
                  	foreach ($dokter as $nama_dok_kons3) :
	                  if($r['nama_dok_kons3'] == $nama_dok_kons3['id']){ ?>
	                  	<tr>
	                  		<td><?=$nama_dok_kons3['nama_dokter'];?></td>
							<td></td>
                  			<td>Rp. <?=number_format($kons3,0,"",",")?></td>
	                  	</tr>
	                  <?php } endforeach; } ?>

           <?php }
			}


           endforeach; ?>
		</tr>
</table>

ini query didalam $ketDistinct :

public function getKetTindakanPembagianJasaRIDistinct(){
return $this->db->query("SELECT distinct(bagi_jasa_tb.ket) as id_ket,bagi_jasa_tb.status, ket_tindakan_tb.* from bagi_jasa_tb, ket_tindakan_tb WHERE bagi_jasa_tb.ket = ket_tindakan_tb.id and bagi_jasa_tb.status = 1 ORDER by bagi_jasa_tb.ket")->result_array();
	}

untuk tampilan tabel di websitenya :

untuk tabel keterangan (ket_tindakan_tb) :

untuk tabel dokter (dokter_tb) :

untuk tabel jasa (bagi_jasa_tb) :

Terimakasih

avatar Terra
@Terra

81 Kontribusi 39 Poin

Diperbarui 5 tahun yang lalu

Tanggapan

query $ketDistinct seperti apa? tabelnya sama kaya data di query ke 2?

sudah saya lampirkan query nya, terimakasih

2 Jawaban:

Jawaban Terpilih

Hi @Terra,

Coba bikin aja helper sederhana biar gampang maintenance nya, contoh:

Tadi dijelaskan pada query pertama untuk ambil "bagi_jasa_tb.ket" dengan parameter "$keterangan[id_ket]", jadi buat aja helper dengan input parameter "$keterangan[id_ket]": <pre> function ambil_keterangan($id_keterangan) { // bikin helper $ci =& get_instance(); // get instance CI, biar semua fungsi ci bisa dipanggil $ci-&gt;load-&gt;database('nama_db'); // load db nya $hasil = null;

// tulis dah query yang mau dijalankan
// jangan lupa return hasilnya, buat di looping lagi

return $hasil;

} </pre>

Untuk query yang ke-2 sama juga bikin helper dengan param "nama_dokter": <pre> function ambil_nama_dokter($nama_dokter, $id_keterangan) { // bikin helper $ci =& get_instance(); // get instance CI, biar semua fungsi ci bisa dipanggil $ci-&gt;load-&gt;database('nama_db'); // load db nya $hasil = null;

// tulis dah query yang mau dijalankan
// jangan lupa return hasilnya, buat di looping lagi

return $hasil;

} </pre>

Cara menggunakan: Jika helper-helper sudah dibuat kan enak manggilnya jadi ga ribet <pre> foreach ($ketDistinct as $keterangan) { // uvuvwevwevwe onyetenyevwe ugwemubwem osas // Lorem ipsum dolor si amet

// nah disini manggil fungsi ambil_keterangan, tampung aja pake variabel
$ambil_keterangan = ambil_keterangan($keterangan[&#039;id_ket&#039;]); // tinggal passing valuenya pada fungsi

// looping nya juga jadi gampang kan
foreach ($ambil_keterangan as $key =&amp;gt; $row_keterangan) {
	// loop lagi dah datanya disini
	
	// disini query lagi kan
	// tinggal panggil lagi deh
	$ambil_nama_dokter = ambil_nama_dokter($row_keterangan[&#039;nama_dokter&#039;], $keterangan[&#039;id_ket&#039;]); // passing lagi jon
	
	// looping aja sampe bosen
	foreach ($ambil_nama_dokter as $k =&amp;gt; $dokter) {
		// serah lu deh mau ngapain
	}
}

} </pre>

*saran dari gw: biasakan jika menulis kode jangan pernah menuliskan query pada view, usahakan diview hanya looping data saja jadi data yang diquery sudah dilakukan pada controller atau lewat helper.

Regards_

avatar apake1
@apake1

106 Kontribusi 55 Poin

Dipost 5 tahun yang lalu

Tanggapan

thanks infonya, iyaa betul sarannya karena pusing juga naruk query di view penuh kali terus kurang rapi. akan saya pelajari tentang helper ini, terimakasih

super banget jawabannya kak

avatar bungtd
@bungtd

5 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban