Postingan lainnya
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
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->load->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->load->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['id_ket']); // tinggal passing valuenya pada fungsi
// looping nya juga jadi gampang kan
foreach ($ambil_keterangan as $key =&gt; $row_keterangan) {
// loop lagi dah datanya disini
// disini query lagi kan
// tinggal panggil lagi deh
$ambil_nama_dokter = ambil_nama_dokter($row_keterangan['nama_dokter'], $keterangan['id_ket']); // passing lagi jon
// looping aja sampe bosen
foreach ($ambil_nama_dokter as $k =&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_
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