Transkrip Sederhana ini dibuat dengan system codeigniter. Cara kerjanya sederhana coba lihat gambar dibawah ini (apabila jalankan via localhost) :
Mantaff bukan...
Langsung aja caranya:
1. Kita buat terlebih dahulu class logic alias Controller-nya. Saya buat yang sederhana saja dengan 2 buah function, index() dan lihat_transkrip().
file source :
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);
}
}
2. 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.
File source:
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;
}
}
3. 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.
file source:
<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>
Mungkin yang terlihat ruwet ada di bagian Model, query database-nya join kemana-mana
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 ini, semoga bermanffaat dech...
Related Posts
Artikel Terkait
Posting Komentar
