Tak terasa besok kita sudah dihadapkan kembali pada hari valentine. Satu hari dimana kata orang-orang yang sudah berpasangan itu indah. Di sisi lain, orang-orang yang sedang sendiri a.k.a jomblo seperti saya ini (bukan curhat lho yaw) cuma bisa bengong meratapi nasib jomblo yang berkepanjangan. Yaw….walaupun saya punya pacar, mungkin acaranya juga akan sama seperti acara apel di malam minggu biasanya. Jemput ke rumah pacar > jalan-jalan gak jelas > makan bareng > pulang (#haha). Daripada galau gak jelas mikirin valentine, mending kita isi dengan kegiatan positif seperti postingan saya kali ini, yang tidak lain dan tidak bukan yaitu, ngOding :D. Pada postingan kali ini, saya akan membagikan sedikit tutorial untuk menampilkan transkrip nilai perkuliahan. Masih berhubungan dengan tutorial sebelumnya, yaitu tentang aplikasi input kartu rencana studi. Kan gak lengkap rasanya, kalau pas KRS’an cuma bisa buka form rencana studi. Makanya saya tambahkan modul untuk melihat transkrip nilai yang diperoleh selama nangkring di bangku kuliah. Berikut tutorialnya, cekidot gan….
1. Karena masih berhubungan dengan aplikasi KRS yang saya posting kemarin, maka saya gunakan file-file framework yang kemarin. Controller, Model dan View-nya saya bedakan agar bisa dengan mudah ditambahkan oleh rekan-rekan yang mungkin sudah men-download file lengkap aplikasi KRS yang kemarin.
2. Kita buat terlebih dahulu class logic alias Controller-nya. Saya buat yang sederhana saja dengan 2 buah function, index() dan lihat_transkrip().
class Transkrip extends CI_Controller { public function index() { $page=$this->uri->segment(3); $limit=12; if(!$page): $offset = 0; else: $offset = $page; endif; $tot_hal = $this->transkrip_model->baca("pw_mst_mahasiswa"); $config['base_url'] = base_url() . 'transkrip/index/'; $config['total_rows'] = $tot_hal->num_rows(); $config['per_page'] = $limit; $config['uri_segment'] = 3; $config['first_link'] = 'First'; $config['last_link'] = 'Last'; $config['next_link'] = 'Next'; $config['prev_link'] = 'Previous'; $this->pagination->initialize($config); $dt["paginator"] =$this->pagination->create_links(); $dt['siswa'] = $this->transkrip_model->baca_siswa($offset,$limit); $this->load->view('transkrip/daftar_siswa',$dt); } public function lihat_transkrip() { if ($this->uri->segment(3) === FALSE) { echo "<meta http-equiv='refresh' content='0; url=".base_url()."/transkrip'>"; } else { $dt['nim'] = $this->uri->segment(3); $seleksi = array('nim' => $dt['nim']); $detail = $this->transkrip_model->baca_detail("pw_mst_mahasiswa",$seleksi); foreach($detail->result() as $d) { $dt["nama_mhs"] = $d->nama_mhs; } $dt['transkrip'] = $this->transkrip_model->transkrip_nilai($dt['nim']); } $this->load->view('transkrip/lihat_transkrip',$dt); } }
3. Selanjutnya kita lanjutkan ke class business process alias Model-nya. Saya tambahkan 2 tabel, yaitu tabel nilai dan tabel bobot nilai agar perhitungan IPK menjadi lebih statis. Sebenarnya bisa saja kalau hanya menggunakan tabel nilai, tapi query database-nya menjadi lebih ruwet karena kita harus menggunakan fungsi CASE.
class Transkrip_Model extends CI_Model { public function baca($tabel) { $q = $this->db->get($tabel); return $q; } public function baca_siswa($offset,$limit) { $q = $this->db->get("pw_mst_mahasiswa",$limit,$offset); return $q; } public function baca_detail($tabel,$seleksi) { $q = $this->db->get_where($tabel,$seleksi); return $q; } public function transkrip_nilai($nim){ $q = $this->db->query(" SELECT t_n.nim, m.nama_mhs, t_n.kode_mk, t_n.nama_mk, t_n.semester_ditempuh, t_n.jum_sks, t_n.grade, b.bobot, ( t_n.jum_sks * b.bobot) AS NxB FROM (SELECT n.nim, n.kode_mk, mk.nama_mk, mk.jum_sks, n.semester_ditempuh, n.grade FROM eva_tr_nilai as n LEFT JOIN ja_mst_mk as mk ON n.kode_mk = mk.kode_mk WHERE n.nim = '$nim') as t_n LEFT JOIN eva_mst_bobot as b ON b.nilai = t_n.grade LEFT JOIN pw_mst_mahasiswa as m ON t_n.nim = m.nim ORDER BY t_n.semester_ditempuh "); return $q; } }
4. Dan terakhir, kita buat sebuah View untuk menampilkan transkrip nilai. Jika rekan-rekan ingin memodifikasinya sedikit, bisa juga digunakan untuk menampilkan kartu hasil studi yang dikelompokkan per semesternya.
<table border="1" width="100%" style="border-collapse: collapse;" cellpadding="4"> <tr bgcolor="#FFFFFF"> <td align="center">No</td> <td align="center">Kode MK</td> <td align="center">Nama MK</td> <td align="center">Semester</td> <td align="center">SKS</td> <td align="center">Nilai</td> <td align="center">Bobot</td> <td align="center">SKS x Bobot</td> </tr> <?php $totalNB=0; $totalSKS=0; $no=1; foreach($transkrip->result_array() as $value) { echo '<tr> <td>'. $no.'</td> <td>'. $value['kode_mk'].'</td> <td> '. $value['nama_mk'].'</td> <td align="center">'.$value['semester_ditempuh'].'</td> <td align="center">'. $value['jum_sks'].' </td> <td align="center">'. $value['grade'].'</td> <td align="center">'. $value['bobot'].'</td> <td align="center">'. $value['NxB'].'</td> </tr>'; $no++; if($value['grade'] != 'T') { $totalNB +=$value['NxB']; $totalSKS+=$value['jum_sks']; } } $ip = 0; if($totalNB !=0) $ip = round($totalNB/$totalSKS, 2); echo ' <tr> <td colspan="4"><strong>Jumlah SKS yang telah diselesaikan : '.$totalSKS.' SKS</strong></td> <td colspan="4"><strong>IP Kumulatif : '.$ip.'</strong></td> </tr>'; ?> </table>
5. Silahkan di jalankan via localhost dan hasilnya akan seperti di bawah ini :
Mungkin yang terlihat ruwet ada di bagian Model, query database-nya join kemana-mana :D. Itu agar proses query-nya lebih dinamis, walaupun saya tau waktu komputasi dan beban kerja server akan meningkat jika menggunakan proses join yang banyak. OK deh, sekian dulu postingan saya di malam detik-detik menyambut hari valentine ini. Semoga bisa bermanfaat untuk rekan-rekan.
Happy Blogging and Keep Coding
Cheerrrsss….!!!!
Mangtabs..Bli..!!!
sungguh kegiatan yang cukup positif… mantap Bli… ingin skli cepat bisa Kyak Bli… hebat coding dan yg terpenting mau berbagi…
semoga bli selalu diberikan kesehatan dan dilancarkan rezekinya oleh Allah SWT.
wah keren nih buat belajar2 tambahan implementasi di codeigniter…
mas buat tutorial membuat member_system gitu dong, kaya ion_auth tapi sayang saya bingung baca coding ion_auth..
lagi pengen bikin user login sesuai dengan hak akses tertentu atau group tertentu..
terimakasih..
can gmn stting contolernya..
mantap di tunggu tutorial2 berikutnya
bli tutorial bikin report di CI donk…jd transkrip nilainya bisa di cetak bli
mf nih mas mau tnya, tp nggk berhbungan dengan topik diatas…
gmna caranya biar file/gmbar yg diupload bisa disimpan di database….????
trus nama file/imagenya bisa ditampilkan dalam sbuah tabel…??? ada referensi nggk mas…???
Bagus mas aplikasinya…. god job
Mantap mas broo,,, sangat membantu sekali tutorialnya,,, terus lanjutkan,, hehehe,,, =)
thx bgt bli…pas banget lagi nyusun laporan KP pake CI
Gimana cara ngedownload nya ko gga bisa bisa
Kox gga bs di download y kka.?