• Tidak ada hasil yang ditemukan

Pembahasan Program

Dalam dokumen IMPLEMENTASI AJAX PADA SISTEM KRS ONLINE (Halaman 71-78)

BAB IV IMPLEMENTASI , PEMBAHASAN DAN ANALISIS

B. Pembahasan Program

Sistem yang dibuat merupakan aplikasi berbasis web. Pada sisi server digunakan bahasa pemrograman PHP, sedangkan di client digunakan javascript. Bagian utama dari sistem yang dibuat adalah pada AJAX engine yang disimpan pada file fungsi.js, kode – kode lain yang ditulis menggunakan PHP hanya digunakan untuk pengolahan pada database. Berikut akan dibahas lebih detail tentang fungsi.js dan beberapa kode – kode yang dianggap penting.

1. AJAX engine ( fungsi.js ) function getXMLHTTPRequest() { try { xmlHttp= new XMLHttpRequest(); } catch(err1) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (err2) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (err3) { xmlHttp = false; } } } return xmlHttp; }

Kode diatas digunakan untuk membuat XMLHTTPRequest object agar system dapat berjalan secara asynchronously. Perintah try dan catch

digunakan untuk mencoba satu persatu method untuk membuat instant object karena tidak dapat diketahui user menggunakan browser apa, dan versi berapa. function handleServerResponse() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { xmlResponse = xmlHttp.responseXML; xmlDocumentElement = xmlResponse.documentElement; Message = xmlDocumentElement.firstChild.data; document.getElementById("divMessage").style.visibility="visible";

document.getElementById("divMessage").innerHTML ='<i>' + Message + '</i>'; if(Message!='Invalid login!'){

document.getElementById("login").style.visibility="hidden"; document.getElementById("Pengambilan").style.visibility="visible"; document.getElementById("logout").style.visibility="visible"; xmlHttp.open("GET", "ambil_mk.php", true);

xmlHttp.onreadystatechange = function(){ document.getElementById("Pengambilan").innerHTML=xmlHttp.responseText; } xmlHttp.send(null); var id1=document.getElementById("divMessage"); //id1.style.position="absolute"; //id1.style.top="45px"; //id1.style.left="470px"; document.getElementById("pass").value=''; document.getElementById("nim").value=''; matakuliah(); } else { var id1=document.getElementById("divMessage"); //id1.style.position="absolute"; //id1.style.top="25px"; //id1.style.left="480px"; } } else {

alert("There was a problem accessing the server: " +xmlHttp.statusText); }

} }

Perintah <(xmlHttp.readyState == 4)> digunakan untuk mengecek apakah status requaest sudah komplit atau belum, sedangkan Perintah <(xmlHttp.status = = 200)> digunakan untuk mengecek apakah asynchronous HTTP request telah berhasil dilaksanakan. Perintah <xmlHttp.open("GET", "ambil_mk.php", true);> digunakan untuk menyiapkan

komunikasi dengan server. Terdapat tiga parameter pada

perintah tersebut. Parameter pertama “GET” mengindikasikan method yang digunakan dalam pengiriman data ke server, dan terdapat dua method yang bisa digunakan yaitu GET dan POST. Parameter yang kedua “ambil_mk.php” adalah halaman server

yang ingin diakses. Parameter yang ketiga adalah “true”

mengindikasikan request akan dikirimkan dengan mode asynchronous. Nilai default dari argument ini adalah true. Perintah

<xmlHttp.send(null);> digunakan untuk mengirimkan request ke server, karena menggunakan method GET, sehingga informasi akan diencode ke URL tujuan, maka Method send hanya memerlukan argument null.

Perintah

<document.getElementById("login").style.visibility="hidden"; atau

getElementById adalah fungsi DOM untuk pengaksesan node dalam pohon DOM. Dalam hal ini fungsi tersebut digunakan untuk mengaktifkan atau menonaktifkan sebuah layer pada halaman utama.

Prinsip kerja fungsi – fungsi lain dalam fungsi.js hampir sama cara kerjanya dengan fungsi handleServerResponse(). Oleh karena itu penulis merasa tidak perlu menjelaskan satu persatu fungsi – fungsi tersebut.

2. Kode File data_jadwal.php 3.

Perintah – perintah diatas digunakan untuk memilih matakuliah yang akan ditawarkan dan akan ditampilkan di layer matakuliah yang ditawarkan. Query diatas merelasikan dua buah yaitu tabel matakuliah dan tabel

<?php session_start(); include "koneksi.php";

//memilih matakuliah yg akan ditawarkan

$result=mysql_query("SELECT mk.kode_mk,mk.nama_mk,mk.sks,j.terisi,j.kapasitas from matakuliah mk,jadwal j

where ((mk.kode_mk=j.kode_mk) and (j.kapasitas>j.terisi))"); echo"<font class='font4'>Matakuliah Yang Ditawarkan</font>";

echo"<table width='100%' border='1' id='tabeltawar' bordercolor='#009933'>"; echo"<tr>";

echo"<td bgcolor='#000000' class='font' align='center'>Kode</td>";

echo"<td bgcolor='#000000' class='font' align='center'>Nama Matakuliah</td>"; echo"<td bgcolor='#000000' class='font' align='center'>SKS</td>";

echo"<td bgcolor='#000000'></td>"; echo"</tr>"; //selama while($baris=mysql_fetch_array($result)) { echo"<tr bgcolor='#00ccff'>"; echo"<td class='font2'>$baris[0]</td>"; echo"<td class='font2'>$baris[1]</td>"; echo"<td class='font2'>$baris[2]</td>"; //

echo"<td><script>var $baris[0]='$baris[0]';</script><input type='button' value='Lihat' onClick='lihat_jadwal($baris[0])'></td>";

echo"</tr>"; }

echo"</table>"; ?> </body>

jadwal. Hasil dari query tersebut akan menampilkan semua matakuliah yang ada di tabel jadwal kecuali matakuliah yang nilai kapasitas dan terisinya sama

3. Kode Pada File ambil_mk.php

<?php include "koneksi.php"; session_start(); $kode_mk = $_GET['kode_mk']; $group = $_GET['group']; if(!empty($group)) {

//memilih matakuliah yg diambil dr tabel jadwal

$hasil=mysql_query("SELECT * FROM jadwal j WHERE (j.kode_mk = '$kode_mk' AND j.group = '$group')");

$baris=mysql_fetch_array($hasil);

//pilih semua dari tabel pengambilan sesuai dengan kode_mk dan nim

$hasil1=mysql_query("SELECT * FROM pengambilan p WHERE (p.kode_mk = '$kode_mk' AND p.nim = '$user_id')");

$baris1=mysql_num_rows($hasil1);

//jika lebih kecil dari 1 maka masukkan data---data belum ada $result=mysql_query("select

p.kode_mk,mk.nama_mk,j.group,j.hari,j.jam_awal,j.jam_akhir,j.ruang,j.dosen,j.kode_mk from pengambilan p,matakuliah mk,jadwal j

where p.nim='$user_id' and p.kode_mk=j.kode_mk and mk.kode_mk= p.kode_mk"); $baris2=mysql_fetch_array($result);

if($baris1<1) {

//cek tabrakan

$hasil_nabrak=mysql_query("SELECT * from jadwal j, pengambilan p WHERE j.kode_mk = '$kode_mk' and j.hari='$baris2[3]' AND (((j.jam_akhir >='$baris2[4]' ) AND (j.jam_awal <= '$baris2[4]'))

OR ((j.jam_akhir >= '$baris2[5]') AND (j.jam_awal <= '$baris2[5]')))and p.nim='$user_id'");

$brs_tabrakan=mysql_num_rows($hasil_nabrak); if ($brs_tabrakan >0)

{

echo"<font class='font2'>Jadwal Yang Tabrakan</font>"; echo"<table width='100%' border='1' id='tabeltawar'>"; echo"<tr class='font' align='center' bgcolor='#000000' >"; echo"<td >Kode</td>";

echo"<td >Nama Matakuliah</td>"; echo"<td>Group</td>"; echo"<td>Hari</td>"; echo"<td>Mulai</td>"; echo"<td>Selesai</td>"; echo"<td>Ruang</td>"; echo"<td>Dosen</td>"; echo"</tr>"; if($brs_tabrakan=mysql_fetch_array($hasil_nabrak)) { $nama_mata_kuliah=mysql_query("SELECT mk.nama_mk FROM matakuliah mk WHERE mk.kode_mk='$brs_tabrakan[0]'"); $brs_cari_nama=mysql_fetch_array($nama_mata_kuliah);

echo"<tr bgcolor='#00ccff' class='font2'>"; echo"<td>$brs_tabrakan[0]</td>"; echo"<td>$brs_cari_nama[0]</td>"; echo"<td>$brs_tabrakan[1]</td>"; echo"<td>$brs_tabrakan[4]</td>"; echo"<td>$brs_tabrakan[5]</td>";

Perintah – perintah diatas digunakan pada proses pengambilan matakuliah dan untuk pengecekan tabrakan. Query untuk mengecek apakah ada jadwal yang bertabrakan atau tidak pertama kali akan membandingkan hari dari masing – masing jadwal tersebut, jika harinya sama baru kemudian akan dilakukan pengecekan terhadap jam awal dan jam akhir. Jika tidak terjadi tabrakan maka data akan dimasukkan ke table pengambilan dan jumlah terisi di table jadwal akan diupdate nilainya.

$nama_mata_kuliah=mysql_query("SELECT mk.nama_mk FROM matakuliah mk WHERE mk.kode_mk='$baris2[0]'");

$brs_cari_nama=mysql_fetch_array($nama_mata_kuliah); echo"<tr bgcolor='#00ccff' class='font2'>";

echo"<td>$baris2[0]</td>"; echo"<td>$brs_cari_nama[0]</td>"; echo"<td>$baris2[2]</td>"; echo"<td>$baris2[3]</td>"; echo"<td>$baris2[4]</td>"; echo"<td>$baris2[5]</td>"; echo"<td>$baris2[6]</td>"; echo"<td>$baris2[7]</td>"; echo"</tr>"; echo"</table>";

echo"<p><input name='Cancel' type='button' value=' CANCEL ' onClick='hapus_mk()'></p>";

} else

{

mysql_query("INSERT INTO pengambilan VALUES('$user_id','$kode_mk','$baris[1]')");

$terisi=mysql_query("SELECT jadwal.terisi from jadwal where (jadwal.kode_mk='$kode_mk' and jadwal.group='$group')");

$terisi_baru=mysql_fetch_array($terisi);

mysql_query("update jadwal SET terisi='$terisi_baru[0]'+1 where (jadwal.kode_mk='$kode_mk' and jadwal.group='$group')");

} }

else {

// jika kosong berikan tanda 1 bahwa matakuliah telah diambil if(!empty($kode_mk)) echo"1";

} }

include"tampil_mk.php"; ?>

4. Kode File tampil_mk.php <?php include "koneksi.php"; session_start(); $kode_mk= $_GET['kode_mk']; $group=$_GET['group']; $result=mysql_query("select p.kode_mk,mk.nama_mk,j.group,j.hari,j.jam_awal,j.jam_akhir,j.ruang,j.dosen from pengambilan p,matakuliah mk,jadwal j

where p.nim='$user_id' and p.kode_mk=j.kode_mk and p.kode_mk=mk.kode_mk order by p.kode_mk"); echo"<font class='font4'>Matakuliah Yang Diambil</font>";

echo"<table width='100%' border='1' id='tabeltawar'>"; echo"<tr class='font' align='center' bgcolor='#000000' >"; echo"<td >Kode</td>";

echo"<td >Nama Matakuliah</td>"; echo"<td>Group</td>"; echo"<td>Hari</td>"; echo"<td>Mulai</td>"; echo"<td>Selesai</td>"; echo"<td>Ruang</td>"; echo"<td>Dosen</td>"; echo"<td></td>"; echo"</tr>"; while($baris=mysql_fetch_array($result)) {

echo"<tr bgcolor='#00ccff' class='font2'>"; echo"<td>$baris[0]</td>"; echo"<td>$baris[1]</td>"; echo"<td>$baris[2]</td>"; echo"<td>$baris[3]</td>"; echo"<td>$baris[4]</td>"; echo"<td>$baris[5]</td>"; echo"<td>$baris[6]</td>"; echo"<td>$baris[7]</td>";

echo"<td class='font2'><script>var $baris[0]='$baris[0]';</script><input type='button' name='batal' value='Batal' onClick='hapus_mk($baris[0])'></td>";

echo"</tr>"; }

echo"</table>";

$jumlah_sks=mysql_query("select SUM(mk.sks) from matakuliah mk,pengambilan p where((mk.kode_mk=p.kode_mk)and(p.nim='$user_id'))"); $total_ambil=mysql_fetch_array($jumlah_sks); $total_ambil_sks=$total_ambil[0]; if(!isset($total_ambil_sks)) $total_ambil_sks=0; $total_bayar=50000*$total_ambil_sks;

echo"<font class='font4'>Total SKS dan Pembayaran</font>"; echo"<table width='100%' border='1' id='tabeltawar'>"; echo"<tr bgcolor='#9DF06B' class='font2'>"; echo"<td>Total SKS yang Diambil</td>"; echo"<td>$total_ambil_sks</td>"; echo"<tr bgcolor='#9DF06B' class='font2'>"; echo"<td>Total Pembayaran</td>"; echo"<td>$total_bayar</td>"; echo"</table>";

Perintah diatas digunakan untuk menampilkan metakuliah yang telah diambil dari tabel pengambilan. Total pembayaran dihitung jumlah SKS yang diambil dikali dengan harga per SKS nya.

Dalam dokumen IMPLEMENTASI AJAX PADA SISTEM KRS ONLINE (Halaman 71-78)

Dokumen terkait