• Tidak ada hasil yang ditemukan

BAB V. ANALISIS HASIL IMPLEMENTASI

IV.1 Penjelasan Logika Pemrogaman pada Web

IV.1.4 Menu Petugas Pelayanan (menu_pelayanan.php)

Halaman ini digunakan oleh petugas pelayanan perpustakaan untuk melakukan transaksi peminjaman dan pengembalian buku, pengelolaan anggota, penggantian akun petugas, backup data base serta melihat laporan buku yang belum kembali. Berikut ini adalah tampilan halaman menu_pelayanan.php.

Berikut ini potongan script untuk menu pelayanan yang terdapat dalam file menu_pelayanan.php.

<table width="208" border="0" cellpadding="3"> <tr> <td width="198"><a href="menu_pelayanan.php?tampil=Frm_cari_anggota.php">::Pengelolaan Anggota</a> </td> </tr> <tr> <td><a href="menu_pelayanan.php?tampil=Frm_update_petugas.php">::Update Akun</a> </td> </tr> <tr> <td><a href="menu_pelayanan.php?tampil=Frm_pinjam.php">::Transaksi</a></td> </tr> <tr>

<td><a href="menu_pelayanan.php?tampil=tes.php">::Backup Data</a> </td> </tr> <tr> <td><a href="menu_pelayanan.php?tampil=lap_keterlambatan_kembali.php">::Laporan Keterlambatan</a></td> </tr> <tr>

<td><a href="log_out.php">::Log Out</a> </td> </tr>

</table>

Listing 4.12 menu_pelayanan.php

Penjelasan dari potongan script menu pelayanan hampir sama dengan penjelasan pada potongan script menu admin, hanya terdapat perbedaan pada link halaman yang dituju.

Berikut ini adalah tampilan dari menu pengelolaan anggota.

Berikut ini adalah potongan listing Frm_cari_anggota.php untuk membuat form inputan pencarian anggota.

<table width="384" height="127" border="0" cellpadding="3"> <tr>

<td width="154" align="right">Berdasarkan No id : </td> <td width="212"><label>

<input name="no_id" type="text" id="no_id" /> </label></td>

</tr> <tr>

<td align="right">Berdasarkan Nama : </td> <td><label>

<input name="nama" type="text" id="nama" /> </label></td>

</tr> <tr>

<td align="right">Berdasarkan Alamat : </td> <td><label>

<input name="alamat" type="text" id="alamat" /> </label></td>

</tr> <tr>

<td align="right">Berdasarkan Instansi :</td> <td><label>

<input name="instansi" type="text" id="instansi" /> Gambar 4.12 Halaman Pencarian Anggota

</label></td> </tr>

<tr>

<td align="right"><label>

<input name="cari" type="submit" id="cari" value="Cari" /> </label></td>

<td><input type="reset" name="Reset" value="Batal" /></td> </tr>

</table>

Listing 4.13 Frm_cari_anggota.php

Sebelum melakukan pengelolaan akan dilakukan pencarian anggota terlebih dahulu. Pencarian anggota berdasarkan no id anggota, nama, alamat, instansi. Penggunaan beberapa kata kunci akan mendapatkan hasil yang lebih spesifik.

Tampilan hasil pencarian anggota adalah sebagai berikut .

Pada halaman hasil pencarian (Gambar 4.13) terdapat tiga buah operasi pada data anggota yaitu update data anggota, hapus data anggota dan registrasi anggota. Registrasi anggota ditujukan untuk anggota yang melakukan pendaftaran ulang , baik anggota baru maupun anggota lama yang masa berlaku keanggotaanya telah habis. Untuk pendaftaran baru ,

calon anggota telah telebih dahulu mangisi form pendaftaran pada halaman utama pengguna. Syarat melakukan registrasi adalah menyerahkan formulir dari perpustakaan yang telah ditandatangani oleh penanggung jawab anggota. Untuk penghapusan anggota , data anggota tidak dihapus dalam database tetapi hanya mengganti status keanggotaan menjadi tidak aktif sehingga hak – hak sebagai anggota akan hilang. Berikut ini akan ditampilkan potongan script tampil_anggota.php yang digunakan untuk melakukan pencarian dan menampilkan data anggota yang sesuai dengan kata kunci pencarian anggota.

<table width="575" border="0" cellpadding="3"> <tr>

<td width="104" align="center" valign="top" class="header">Id Anggota</td> <td width="139" align="center" valign="top" class="header">Nama</td> <td width="180" align="center" valign="top" class="header">Alamat</td>

<td width="118" align="center" valign="top"

class="header">Operasi</div></td> </tr>

<?php

include "../koneksi.php";

$strsql="select * from anggota where 1=1"; //query untuk pencarian

if($_REQUEST[no_id]) {

$strsql.=" and No_anggota='$_REQUEST[no_id]'";

}if($_REQUEST[nama]) {

$strsql.= " and Nama like '%$_REQUEST[nama]%'";

}if($_REQUEST[alamat]) {

$strsql.=" and Alamat like '%$_REQUEST[alamat]%'";

}if($_REQUEST[instansi]) {

$strsql.=" and Instansi like '%$_REQUEST[instansi]%'"; }

$cek=mysql_query($strsql) or die(mysql_error());

while($sql=mysql_fetch_array($cek)) {

?> <tr>

<td align="left" class="tampil_usulan">&nbsp;<?php echo $sql[No_anggota].'/'.$sql[Kategori_anggota].'/Pusip' ;?></td>

<td align="center" class="tampil_usulan">&nbsp;<?php echo $sql['Nama'];?></td>

<td align="center" class="tampil_usulan">&nbsp;<?php echo $sql['Alamat'];?></td>

<td align="left" class="tampil_usulan"><a

href="menu_pelayanan.php?tampil=Frm_update_anggota.php&No_anggota=<?php

echo $sql['No_anggota'];?>">Update </a>&nbsp;&nbsp; <?php if($sql['Register']==0) { ?><a href="cek_register_anggota.php?No_anggota=<?php echo $sql['No_anggota'];?>">Register </a> <?php } ?>

href="menu_pelayanan.php?tampil=cek_hapus_anggota.php&No_anggota=<?php echo $sql['No_anggota'];?>">Delete </a></td>

</tr><?php } } ?> </table> Listing 4.14 tampil_anggota.php

Query pencarian untuk klause where akan mengikuti jumlah kata kunci pencarian sehingga hasil yang di dapat akan lebih spesifik.

Pada halaman update anggota (Gambar 4.14), petugas pelayanan dapat merubah data anggota. Data anggota yang dapat dirubah adalah nama, alamat, kategori anggota, no tlp , instansi, penjamin, jabatan penjamin. Data anggota dapat dirubah pada saat melakukan registrasi, disesuaikan dengan isian formulir pendaftaran ataupun sewaktu waktu untuk menyesuaikan dengan data aslinya. Konfirmasi keberhasilan update data adalah ditampilkannya data anggota yang baru pada halaman tampil_detail_anggota.php.

Halaman tampil detil anggota menampilkan data anggota yang telah diupdate. Potongan script halaman tampil_detail_anggota.php adalah sebagai berikut .

<table width="424" height="270" border="0" cellpadding="3"> <tr><?php

include "../koneksi.php";

$strsql="select * from anggota where

No_anggota='$_REQUEST[No_anggota]'";

$sql=mysql_query($strsql) or die(mysql_error());

$cek=mysql_fetch_array($sql);

if($cek[Register]=='0') {

$status=" Belum Registrasi";

} elseif($cek[Register]=='1') {

$status=" Anggota";

} elseif($cek[Register]=='2') {

$status=" Mantan Anggota";

} ?>

<td width="130" align="right">Id Anggota : </td>

<td width="276"><label><?php echo

$cek[No_anggota].'/'.$cek[Kategori_anggota].'/Pusip' ;?> </label></td> </tr>

<tr>

<td align="right">Nama : </td>

<td><label><?php echo $cek[Nama] ;?> </label></td> </tr>

<tr>

<td align="right">Alamat : </td>

<td><label><?php echo $cek[Alamat] ;?> </label></td> </tr>

<tr>

<td align="right">No tlp : </td>

<td><label><?php echo $cek[No_tlp] ;?> </label></td> Gambar 4.15 Halaman Tampil Detil Anggota

</tr> <tr>

<td align="right">Instansi : </td>

<td><label><?php echo $cek[Instansi] ;?> </label></td> </tr>

<tr>

<td align="right">Penjamin : </td>

<td><label><?php echo $cek[Penjamin] ;?> </label></td> </tr>

<tr>

<td align="right">Jabatan Penjamin : </td>

<td><label><?php echo $cek[Jabatan_penjamin] ;?> </label></td> </tr>

<tr>

<td align="right">masa berlaku : </td>

<td><label><?php echo $cek[Masa_berlaku] ;?> </label></td> </tr>

<tr>

<td align="right">Status : </td>

<td><label><?php echo $status ;?> </label></td> </tr>

</table>

Listing 4.15 tampil_detail_anggota.php

Script untuk melakukan registrasi adalah sebgai berikut. // registrasi anggota

<?php

include "../koneksi.php";

$nextyear =date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y")+1));

$strsql="update anggota set Register=1 , Masa_berlaku='$nextyear' where No_anggota='$HTTP_GET_VARS[No_anggota]'";

echo $strsql;

?>

Listing 4.16 cek_register_anggota.php

Pada script registrasi anggota hanya dilakukan query untuk upadate status dari register serta masa berlaku.

Penghapusan angota dapat dilakukan jika masa berlaku keanggotaan sudah habis atau anggota sering bermasalah seperti selalu terlambat dalam pengembalian buku. Berikut ini potongan script cek_hapus_anggota.php.

$strsql="update anggota set Register='0' where No_anggota='$HTTP_GET_VARS[No_anggota]'";

$query_admin=mysql_query($strsql) or die(mysql_error());

$pesan="Delete Anggota dengan nomor $HTTP_GET_VARS[No_anggota] Berhasil";

echo "<meta http-equiv='refresh'content='0; url=menu_pelayanan.php?tampil=pesan.php&pesan=$pesan'>";

Listing 4.17 cek_hapus_anggota.php

Konfirmasi untuk keberhasilan penghapusan anggota adalah halaman pesan.php berupa tampilan pesan bahwa data telah berhasil dihapus.

Menu pelayanan selanjutnya adalah update akun petugas. Pada halaman ini petugas dapat hanya dapat melakukan penggantian password. Untuk penggantian nama dan jabatan hanya dapat dilakukan oleh administrator.

Gambar 4.16 Halaman Pesan

Pada saat petugas melakukan update akun, dilakukan validasi password. Hal ini bertujuan untuk memastikan bahwa data yang diupdate adalah data milik petugas itu sendiri. Pengecekan validasi tersebut terdapat pada halaman cek_ganti_password.php.

// cek ganti password

$enkrippass=md5($HTTP_POST_VARS['passwd1']);

$enkripbaru=md5($HTTP_POST_VARS['passwd2']); $strsql="select * from petugas where

Id_petugas='$_SESSION[logidpetugas]' and Password='$enkrippass'";

$sql=mysql_query($strsql) or die(mysql_error());

$cek=mysql_fetch_array($sql);

if($cek['Nama']){$strsql="update petugas set

Password='$enkripbaru' where Id_petugas='$_SESSION[logidpetugas]'";

$sql=mysql_query($strsql) or die(mysql_error());

$pesan="Password berhasil diganti";

echo "<meta http-equiv='refresh'content='0;

url=$url&pesan=$pesan'>"; }else{

$pesan="Passowrd lama tidak cocok";

echo "<meta http-equiv='refresh'content='0;

url=$url&pesan=$pesan'>"; }

Listing 4.18 cek_ganti_password.php

Konfirmasi keberhasilan penggantian password adalah halaman pesan.php dengan menampilkan pesan bahwa password sudah diganti.

Bagian yang paling penting dari web ini adalah pada menu transaksi, meliputi peminjaman buku dan pengambalian buku. Prosedur untuk melakukan transaksi adalah :

1. Anggota yang akan melakukan transaksi menyerahkan kartu anggota kepada petugas pelayanan perpustakaan.

2. Buku yang akan dipinjam atau dikembalikan diserahkan kepada petugas pelayanan perpustakaan.

Pada halaman inputan no anggota (Gambar 4.18 ) petugas mengisi inputan no anggota sesuai dengan kartu anggota yang diserahkan. Pada halaman ini juga dilakukan pengecekan untuk memastikan status keanggotaan. Jika masa berlaku keanggotaan masih aktif akan berlanjut ke halaman transaksi, sedangkan jika masa berlaku sudah habis akan ditampilkan pesan bahwa masa berlaku keanggotaan telah habis , dan diminta untuk segera melakukan registrasi.

Gambar 4.18 Halaman Inputan No Anggota

Halaman ini menampilkan data anggota dan data buku yang sedang dipinjam. Peminjaman buku oleh anggota maksimal 3 buah buku. Inputan No panggil buku tidak akan muncul apabila anggota telah meminjam 3 buah buku. Potongan script untuk halaman Frm_pinjam_kembali.php adalah :

<table width="444" height="77" cellpadding="3"> <tr><?php

include "../koneksi.php";

// query untuk menampilkan data anggota

$strsql="select SUBSTRING(Tgl_daftar,1,4) as Tahun, No_anggota, Kategori_anggota, Nama, Alamat from anggota where

No_anggota='$_SESSION[log_no_anggota]'";

$sql=mysql_query($strsql) or die(mysql_error());

$cek=mysql_fetch_array($sql); ?>

<td width="86" align="right">Id Anggota : </td> <td width="338"><label> <?php echo $cek[No_anggota].'/'.$cek[Kategori_anggota].'/'.$cek[Tahun]; ?> </label></td> </tr> <tr> <td align="right">Nama : </td> <td><label> <?php echo $cek[Nama] ;?> </label></td> </tr> <tr> <td align="right">Alamat : </td> <td><label> <?php echo $cek[Alamat] ;?> </label></td> </tr> </table> <br> </form>

<form id="form2" name="form1" method="post" action=""> <table width="545" height="56" border="0" cellpadding="3"> <p></p>

<b>Buku yang masih dipinjam </b> <tr>

<td width="20" align="center" class="header">No</td> <td width="84" align="center" class="header">No DCC</td> <td width="101" align="center" class="header">Judul Buku </td>

<td width="91" align="center" class="header">Batas Waktu Pengembalian </td> <td width="94" align="center" class="header">Keterlambatan (hari)</td> <td width="91" align="center" class="header">Transaksi</td>

</tr>

<?php

include "../koneksi.php";

$nomor=1;

$strsql1="select detil_transaksi.No_panggil, buku.Judul,

detil_transaksi.Status_transaksi, detil_transaksi.Batas_peminjaman, transaksi.Tgl_transaksi from transaksi,detil_transaksi,buku where

(detil_transaksi.Status_transaksi='2' or detil_transaksi.Status_transaksi='3') and transaksi.No_anggota='$_SESSION[log_no_anggota]' and transaksi.No_transaksi=detil_transaksi.No_transaksi and detil_transaksi.No_panggil=buku.No_panggil"; $sql1=mysql_query($strsql1) or die(mysql_error()); $jumpinjam=mysql_num_rows($sql1); while($cek1=mysql_fetch_array($sql1)){ // melakukan perhitungan ketelambatan pengembalian

if($cek1['Batas_peminjaman']>date('Y-m-d')) { $terlambat=0; } else { $awal=$cek1['Batas_peminjaman']; $akhir=date("Y-m-d"); $ex=explode("-",$awal); $ex2=explode("-",$akhir); $awal_tahun=$ex[0]; $awal_bulan=$ex[1]; $awal_hari=$ex[2]; $akhir_tahun=$ex2[0]; $akhir_bulan=$ex2[1]; $akhir_hari=$ex2[2]; $tgl_awal=mktime(0,0,0,$awal_bulan,$awal_hari,$awal_tahun); $tgl_akhir=mktime(0,0,0,$akhir_bulan,$akhir_hari,$akhir_tahun); $terlambat=($tgl_akhir-$tgl_awal) / 86400 ; } ?> <tr

// menampilkan data buku yang dipinjam

<td class="tampil_usulan">&nbsp;<?php echo $nomor?></td> <td class="tampil_usulan"><?php echo $cek1['No_panggil'];?></td> <td class="tampil_usulan"><?php echo $cek1['Judul'];?></td>

<td class="tampil_usulan"><?php echo $cek1['Batas_peminjaman'];?></td> <td class="tampil_usulan"><?php echo $terlambat;?></td>

<td class="tampil_usulan"> <?php if($cek1[Status_transaksi]==2) {?> <a href="cek_perpanjang_pinjam.php?No_panggil=<?php echo

$cek1['No_panggil'];?>&No_anggota=<?php echo

$cek['No_anggota'];?>">perpanjang <?php } ?></a> &nbsp;&nbsp; <a href="cek_kembali.php?No_panggil=<?php echo $cek1['No_panggil']; ?>&No_anggota=<?php echo $cek['No_anggota'];?>">kembali</a> </td> </tr> <?php $nomor ++;} ?> </table> <br> </form>

<form method="post" action="<?php $PHP_SELF ?>"> <p><b>Peminjaman Baru</b></p>

// handler untuk peminjaman buku <?php if ($jumpinjam>=3) { ?>

Anggota ini telah meminjam menepati batas maksimal peminjaman <?php } else { ?>

Masih dapat meminjam <?php echo 3-$jumpinjam; ?> buku <table width="397" height="27" border="0" cellpadding="3"> <tr>

<td width="130" align="right">No Panggil Buku : </td> <td width="152"><label>

<input name="no_panggil" type="text" id="no_panggil" /> </label></td>

<td width="89"><label>

<input name="add" type="submit" id="add" value="Pinjam" /> </label></td>

</tr>

</table><br> <?php } ?>

<input name="hide" type="hidden" id="hide" value="<?php echo $cek[No_anggota];?>" />

<label></label>

<?php if($HTTP_POST_VARS[add]) {

if(!$HTTP_POST_VARS[no_panggil]) { echo " inputan kosong , silahkan isi No Panggil buku";

}elseif($HTTP_POST_VARS[no_panggil]) {

$strsql3="select * from buku where

No_panggil='$_REQUEST[no_panggil]'"; $sql3=mysql_query($strsql3) or die (mysql_error()); $cek3=mysql_fetch_array($sql3); if($cek3[No_panggil] and $cek3[Status_buku]==1) { session_register(log_no_panggil); $_SESSION[log_no_panggil]=$HTTP_POST_VARS[no_panggil]; echo "<meta http-equiv='refresh'content='0; url=menu_pelayanan.php?tampil=cek_pemesan_buku.php&No_panggil=$HTTP_PO ST_VARS[no_panggil]'>"; } if($cek3[No_panggil] and $cek3[Status_buku]==0) {

echo "Buku Sedang Dipinjam";

} elseif(!$cek3[No_panggil]) {

echo "Buku tidak tersedia";

} } } else { } ?> Listing 4.19 Frm_pinjam_kembali.php

Setelah memasukan no panggil buku (no DCC) , sistem akan mengecek apakah buku dengan judul yang sama telah dipesan atau tidak. Jika buku sudah dipesan oleh anggota tersebut maka secara otomatis

sistem akan menghapus data pemesanan dengan no anggota yang sama dengan peminjam buku. Jika judul buku yang dipinjam telah dipesan oleh anggota lain dan buku yang tersedia lebih banyak dari pada pemesan maka secara otomatis sistem akan melakukan peminjaman. Tetapi jika judul buku yang dipinjam telah dipesan oleh anggota lain dan jumlah pemesan lebih banyak dari buku yang tersedia maka sistem akan menyerahkan keputusan pada petugas untuk melakukan peminjaman atau tidak.

Pada halaman ini peminjaman buku diserahkan kepada petugas pelayanan. Petugas pelayanan akan memperhatikan jumlah buku yang tersedia dan jumlah pemesanan dalam pengambilan keputusan peminjaman. Potongan script pada halaman cek_pemesanan_buku.php adalah :

<?php session_start();

if($_SESSION[logjabatan]!=Pelayanan) {

echo "<meta http-equiv='refresh'content='0; url=index.php'>"; }

?>

<link href="../Styleku2.css" rel="stylesheet" type="text/css" /> <b>Pemesan Buku</b>

<table width="492" border="0" cellpadding="3"> <tr>

<td width="102" class="header">Nama</td>

<td width="172" class="header">Judul</td>

<td width="100" class="header">Tanggal Pesan</td> </tr>

<?php

include"../koneksi.php"; $pesan=0;

$jumlah_tersedia=0; //mencari jumlah koleksi buku

$strsql3="select count(Judul) as jumlah_koleksi ,Judul from buku where (Status_buku=1 or Status_buku=0) group by Judul having Judul=(select Judul from buku where No_panggil='$HTTP_GET_VARS[No_panggil]') ";

$sql3=mysql_query($strsql3) or die(mysql_error());

$cek3=mysql_fetch_array($sql3); //mencari jumlah buku yang tersedia

$strsql1="select count(Judul) as stock_tersedia ,Judul from buku where Status_buku=1 group by Judul having Judul=(select Judul from buku where No_panggil='$HTTP_GET_VARS[No_panggil]') "; $sql1=mysql_query($strsql1) or die(mysql_error()); $cek1=mysql_fetch_array($sql1); if($cek1['stock_tersedia']) { $jumlah_tersedia=$cek1['stock_tersedia']; }

// menampilkan informasi pemesan buku

$strsql=" select pemesanan_buku.No_anggota, anggota.Nama,buku.Judul,pemesanan_buku.Tanggal_pesan from pemesanan_buku,

buku, anggota where buku.No_panggil='$HTTP_GET_VARS[No_panggil]' and

buku.Judul=Pemesanan_buku.Judul and anggota.No_anggota=pemesanan_buku.No_anggota "; $sql=mysql_query($strsql) or die(mysql_error()); $Jumlah_pemesan=0; while($cek=mysql_fetch_array($sql)) { $pesan=1; $Jumlah_pemesan=$Jumlah_pemesan+1; if($cek['No_anggota']==$_SESSION['log_no_anggota']) {

$strsql2="delete from pemesanan_buku where

No_anggota='$_SESSION[log_no_anggota]' and Judul='$cek[Judul]'";

$sql2=mysql_query($strsql2) or

die(mysql_error());

echo "<meta http-equiv='refresh'content='0;

url=cek_pinjam.php?No_panggil=$HTTP_GET_VARS[No_panggil]'>";

Dokumen terkait