BAB V. ANALISIS HASIL IMPLEMENTASI
IV.1 Penjelasan Logika Pemrogaman pada Web
IV.1.3 Menu Admin (menu_admin.php)
Di halaman ini terdapat menu login untuk anggota dan beberapa menu untuk non anggota seperti menu profil perpusda kab. Buleleng, menu pendaftaran anggota , menu pencarian buku dan menu buku tamu. Setiap pengujung pepustakaan diwajibkan untuk melakukan pengisian data pada menu buku tamu.
IV.1.3 Menu Admin (menu_admin.php)
Halaman menu admin ini digunakan oleh administrator untuk melakukan pengelolaan hak akses terhadap halaman web oleh petugas perpustakaan serta melihat laporan peminjaman buku. Halaman ini hanya dapat diakses setelah mendapatkan validasi dari proses login pada halaman utama petugas(index.php).
Pada halaman menu admin terdapat terdapat link (tulisan berwarna biru) ke halaman web yang merupakan kewenangan dari seorang admin.. Penggalan file menu_admin.php berikut digunakan untuk menampilkan menu pada halaman admin.
<p><a href="menu_admin.php?tampil=tampil_petugas.php"> Pengelolaan Petugas </a> </p>
<p><a href="menu_admin.php?tampil=Laporan.php"> Laporan </a></p> <p><a href="log_out.php"> Log Out </a> </p>
<td width="578" align="left" valign="top"> <?php if ($_REQUEST[tampil]){ include($_REQUEST[tampil]); } ?> </td>
Listing 4.3 menu_admin.php
Ketika admin memilih menu pengelolaan petugas maka halaman yang dituju adalah menu_admin.php dan variabel “tampil” bernilai tampil_petugas.php (halaman tampil_petugas.php akan muncul disebelah kanan menu). Begitu juga jika memilih menu Laporan maka halaman yang dituju adalah menu_admin.php dan variabel “tampil” akan bernilai Laporan.php . Pada pemilihan menu Log Out halaman yang dituju adalah halaman log_out.php. Penggalan perintah diatas juga digunakan untuk menampilkan menu pada beberapa halaman lain.
Gambar berikut adalah pemilihan menu Pengelolaan Petugas pada halaman menu_admin.php .
<?php
include "../koneksi.php";
$strsql="select * from petugas where status_aktif='1'"; $cek=mysql_query($strsql) or die(mysql_error()); while($sql=mysql_fetch_array($cek)) {
?> <tr>
<td> <? echo $sql['Id_petugas'];?></td> <td> <? echo $sql['Nama'];?></td> <td> <? echo $sql['Jabatan'];?></td> <td> <a
href="menu_admin.php?tampil=Frm_update_admin.php&Id_petugas=<? echo $sql['Id_petugas'];?>"> Edit </a> <a href="menu_admin.php?tampil=cek_hapus_petugas.php&Id_petugas=<? echo $sql['Id_petugas'];?>"> Hapus </a></td>
</tr> <? } ?><p> <a href="menu_admin.php?tampil=Frm_tambah_petugas.php"> Tambah Petugas </a> </p>
Listing 4.4 tampil_petugas.php
Script diatas adalah contoh query sql yang digunakan untuk mengambil data dari petugas yang aktif dan menampilkan data pada halaman web. Penjelasan dari script tersebut adalah :
1. Variabel $strsql dibuat untuk menyatakan query SQL yang befungsi untuk mengambil data dari table sesuai dengan kondisi tertentu .
2. Data akan ditampilkan sampai kondisi pada query tidak terpenuhi.
3. Pada link Edit dan Hapus masing – masing mambawa variabel Id_petugas yang nilainya dibutuhkan pada halaman selanjutnya.
Pada gambar 4.5 , ditampilkan data anggota sebelum dilakukan perubahan. Hal ini dimaksudkan untuk lebih meyakinkan sebelum melakukan pengubahan data.
if($HTTP_POST_VARS['pswd']){ $ubahpswd=md5($HTTP_POST_VARS[pswd]);
$strsql="update petugas set Id_petugas='$_REQUEST[no_id]',
Nama='$_REQUEST[username]', Password='$ubahpswd', Jabatan='$_REQUEST[jabatan]' where Id_petugas='$_REQUEST[hide]'";
} elseif ( empty($HTTP_POST_VARS['pswd'])){ $strsql="update petugas set
Id_petugas='$_REQUEST[no_id]', Nama='$_REQUEST[username]', Jabatan='$_REQUEST[jabatan]' where Id_petugas='$_REQUEST[hide]'"; }
include "../koneksi.php";
$query_admin=mysql_query($strsql) or die(mysql_error()); Gambar 4.5 Halaman Edit Petugas
header("location:menu_admin.php?tampil=tampil_petugas.php"); Listing 4.5 cek_update_petugas.php
Potongan script diatas adalah query untuk melakukan update data petugas. Terdapat perbedaan query dalam edit data petugas dimana inputan password yang kosong tidak dilakukan set terhadap password dan sebaliknya untuk inputan yang tidak kosong. Konfirmasi keberhasilan perubahan data ditunjukan pada ditampilkannya data petugas yang baru di halaman tampil_petugas,php Pola script diatas juga digunakan untuk beberapa kasus edit data.
Berikutnya adalah ptongan script pada halaman cek_hapus_petugas.php
include "../koneksi.php";
$strsql="upadate petugas set status_aktif=’0' where
Id_petugas='$_REQUEST[Id_petugas]'"; $query_admin=mysql_query($strsql) or die(mysql_error());
echo "<meta http-equiv='refresh'content='0;
url=index_admin.php?tampil=tampil_petugas.php'>"; Listing 4.6 cek_hapus_petuga.php
Dalam penghapusan data petugas tidak dilakukan perintah delete karena data petugas memiliki relasi dengan table yang lain sehingga cukup dengan perintah update dan status_aktif di set menjadi 0 yang menyatakan bahwa petugas tersebut sudah tidak aktif lagi. Konfirmasi keberhasilan penghapusan data adalah tidak ditampilkannya data petugas yang telah dihapus pada halaman tampil_petugas.php
// insert data petugas
include "../koneksi.php";
echo "$ubahpsswd";
$ubahpsswd=md5($HTTP_POST_VARS['password']); $strsql="insert into petugas
values('$HTTP_POST_VARS[No_id]','$HTTP_POST_VARS[username]','$ubahpsswd', '$HTTP_POST_VARS[status_login]')";
$cek=mysql_query($strsql) or die(mysql_error());
header("location:index_admin.php?tampil=tampil_petugas.php"); Listing 4.7 cek_tambah_petugas.php
Script diatas merupakan penggalan dari cek_tambah_petugas.php. Inputan password akan dienkripsi sebelum dimasukan ke dalam table petugas. Konfirmasi berhasilnya proses penambahan petugas adalah ditampilkannya data petugas baru pada halaman tampil_petugas.php
Gambar 4.6 Halaman Tambah Data Petugas
Pada drop down menu terdapat pilihan laporan berdasarkan periode yaitu laporan bulanan atau laporan tahunan. Contoh untuk pemilihan laporan bulanan adalah sebagai berikut :
Admin dapat menentukan sendiri laporan yang ingin di tampilkan berdasarkan periode per bulan dan jenisnya. Terdapat dua jenis laporan :
1. Peminjam adalah laporan jumlah peminjaman buku berdasarkan kategori peminjam yaitu pelajar, mahasiswa, dan umum.
2. Buku adalah laporan jumlah peminjaman buku berdasarkan kategori buku yang dipinjam.
Gambar 4.8 Halaman Laporan Bulanan
Berikut ini adalah potongan script yang dianggap penting pada halaman lap_bulan_peminjam.php (halaman untuk menampilkan laporan jumlah peminjaman per bulan bersadasarkan kategori peminjam).
// mencari selisih bulan
$awal=explode("-", $HTTP_GET_VARS[awal]); $tahun_1=$awal[0]; $bulan_1=$awal[1]; $akhir=explode("-",$HTTP_GET_VARS[akhir]); $bulan_2=$akhir[1]; $tahun_2=$akhir[0]; $a=$tahun_1.'-'.$bulan_1; $b=$tahun_2.'-'.($bulan_2-1); if($bulan_2==01){ $b=($tahun_2-1).'-12'; }
echo "<b><br>$a sampai dengan $b</b>"; $rentang_bulan=$bulan_2-$bulan_1; if($tahun_2>$tahun_1) { $rentang_tahun=($tahun_2-$tahun_1)*12; $rentang_bulan=$rentang_bulan+$rentang_tahun; } $x=$bulan_1;
for($i=$bulan_1 ; $i<=$bulan_1+$rentang_bulan ; $i++ ) { if($i % 12==1 && $i>12) {
$tahun_1+=1; $x=1; } $bulan[$i]=$tahun_1.'-'.$x.'-01'; $month[$i]=$x; $x+=1; } Listing 4.8 lap_bulan_peminjam.php
Dibagian atas script bisa kita lihat variabel awal yang digunakan untuk menampung inputan tanggal. Dari nilai variabel awal kemudian dipisah-pisah untuk mendapatkan nilai bulan dan tahun awal dari periode
laporan. Hal yang sama juga dilakukan untuk mendapatkan bulan dan tahun akhir dari periode laporan. Selanjutnya dilakukan perhitungan selisih bulan yang nantinya digunakan untuk variabel looping dalam pencarian data. Elemen array pada variabel bulan dan month diisi satu persatu dengan cara perulangan (loop).
// looping untuk pengambilan data
for($i=$bulan_1 ; $i<$bulan_1+$rentang_bulan ; $i++ ){
$blna=$bulan[$i+1];
$strsql="select anggota.Kategori_anggota
,count(detil_transaksi.No_transaksi) as Jumlah , month(transaksi.Tgl_transaksi) as bulan from anggota, transaksi, detil_transaksi where transaksi.No_anggota=anggota.No_anggota and transaksi.No_transaksi= detil_transaksi.No_transaksi and transaksi.Tgl_transaksi>='$bulan[$i]' and transaksi.Tgl_transaksi<'$blna' group by anggota.Kategori_anggota ";
$sql=mysql_query($strsql) or die(mysql_error()); $pelajar=0; $umum=0; $mahasiswa=0; $total=0; while($cek=mysql_fetch_array($sql)) { if($cek['Kategori_anggota']=="SD" or $cek['Kategori_anggota']=="SMP" or $cek['Kategori_anggota']=="SMA") { $pelajar=$pelajar+$cek[Jumlah]; }elseif($cek['Kategori_anggota']=="SWASTA"or $cek['Kategori_anggota']=="PNS" or $cek['Kategori_anggota']=="UMUM") { $umum=$umum+$cek[Jumlah]; } else { $mahasiswa=$cek[Jumlah]; } $total=$cek[Jumlah]; } Listing 4.9 lap_bulan_peminjam.php
Variabel blna diset bernilai bulan[$i+1] artinya vaiabel blna akan selalu bernilai bulan setelahnya. Script selanjutnya adalah query SQL
untuk mengambil data, salah satu syarat dalam query adalah tanggal transaksi berada diantara nilai vaiabel bulan[$i] dan blna. Jadi pengambilan data dilakukan perbulan sampai keluar dari kondisi perulangan. Hasil dari query akan diakumulasikan berdasarkan kategori anggota.
//konvert nama bulan
if($i==01) { $moon="Januari";
} elseif ($i==2) { $moon="Februari"; } elseif ($i==3) { $moon="Maret"; } elseif ($i==4) { $moon="April"; } elseif ($i==5) { $moon="Mei"; } elseif ($i==6) { $moon="Juni"; } elseif ($i==7) { $moon="Juli"; } elseif ($i==8) { $moon="Agustus"; } elseif ($i==9) { $moon="September"; } elseif ($i==10) { $moon="Oktober"; } elseif ($i==11) { $moon="November"; } elseif ($i==12) { $moon="Desember"; }
<tr>
<td><? echo $moon; ?> </td>
<td align="center"><? echo $pelajar;?> </td> <td align="center"><? echo $mahasiswa;?> </td> <td align="center"><? echo $umum;?> </td> <td align="center"> <? echo $total?></td> </tr><?
Listing 4.10 lap_bulan_peminjam.php
Script bagian atas digunakan untuk mendapatkan nama bulan. Script bagain bagian bawah digunakan untuk menampilkan hasil query ke halaman web.
Pola yang hampir sama dilakukan untuk setiap penampilan laporan. Perbedaanya terletak pada query dalam pengambilan data dan periode dalam pengambilan data.
Berikut ini akan ditampilkan contoh halaman untuk menampilkan laporan bulanan berdasarkan buku yang dipinjam, laporan tahunan berdasarkan peminjam dan buku yang dipinjam.
<? session_start();
session_destroy(); ?>
<meta http-equiv="refresh" content="0;<?php echo "url=../operator/index.php" ?> Listing 4.11 logout.php
Sourcecode untuk log out pada halaman admin. Script yang sama juga digunakan pasa setiap halaman log out, hanya terdapat perbedaan pada link nya.