1 TUTORIAL ABSENSI Membuat Sendiri Aplikasi Absensi Bagian 2 dari 2 Tulisan Bagi yang belum memiliki fasilitas absensi yang terkomputerisasi, mari mem...
Membuat Sendiri Aplikasi Absensi Bagian 2 dari 2 Tulisan
B
agi yang belum memiliki fasilitas absensi yang terkomputerisasi, mari membuat absensi sederhana dengan memanfaatkan shell script, PHP, dan database PostgreSQL. Di bagian pertama, kita sudah membuat absensi dengan front end berbasis text (shell script). Pada bagian terakhir ini, kita akan membahas front end berbasis web (PHP).
Melanjutkan bagian sebelumnya, kita akan segera membangun front end berbasis web. Diharapkan, struktur dan isi tabel telah disiapkan dengan baik.
Front end berbasis web Front end ini akan kita beri nama absen. php dan harus dapat diakses dari web server. Cara kerja dan flow program dibuat semirip mungkin dengan front end berbasis text (untuk penjelasan, dapat merujuk pada penjelasan alur program front end berbasis text bagian sebelumnya). Sementara untuk isi source code-nya, karena perbedaan cara kerja aplikasi web dan aplikasi desktop, kita harus melakukan penyesuaian. Berikut ini adalah isi dari absen.php: <TITLE>Absen
“;
52
06/2006 INFOLINUX
if (!$_REQUEST[‘task’]) { echo “ “; } else if ($_REQUEST[‘task’] == ‘check’) { $user_id = strtoupper(trim( $_POST[‘user_id’])); $q = “select id_user from ms_user where iduser=upper (‘$user_id’)”; $r = pg_query($conn, $q); if (!pg_num_rows($r)) { echo “ User not found
  “; } else { $q = “select remark from tr_absen where date (time_in)= current_date and id_user=upper (‘$user_id’)”; $r = pg_query($conn, $q); if (!pg_num_rows($r)) { $c_act = true; } else { $l = pg_fetch_array($r, 0, PGSQL_ASSOC); if ($l[‘remark’] == “”) $c_act = true; } if ($c_act == true) { echo “ “; } else { echo “ “; } } } else if ($_REQUEST[‘task’] == ‘process’) { $user_id = $_POST[‘user_id’];
www.infolinux.web.id
$q = “select time_in from tr_absen where date(time_in)= current_date and id_user= upper(‘$user_id’) “; $r = pg_query($conn, $q); $in_before = true; if (!pg_num_rows($r)) { $in_before = false; } else { $l = pg_fetch_array($r, 0, PGSQL_ASSOC); if ($l[‘time_in’] == “”) $in_before = false; } switch ($_POST[‘action’]) { case “IN”: if ($in_before == false) { $q = “insert into tr_absen(id_user, time_out) values (upper(‘$user_id’), null) “; $r = pg_query($conn, $q);
}
echo “
Welcome to Office Have a nice day
“; break; case “OUT”:
if ($in_before == false) { echo “
ERROR: Please select IN first
“; } else { $q = “update tr_ absen set time_out= now() where id_user= upper(‘$user_id’) and date(time_in)= current_date “; $r = pg_query($conn, $q); echo “
See you later Have a nice day
“; } break; case “BREAK”: if ($in_before == false) { echo “
“; } else if ($confirm == ‘Yes’) { $q = “update tr_absen set break_count= break_count+1, remark=’break:$reason’ where id_user= upper(‘$user_id’) and date (time_in)= current_date” ; $r = pg_query($conn, $q);
echo “
Take your time
www.infolinux.web.id
TUTORIAL ABSENSI
FE Web based: input.
FE Web based: IN, OUT, atau BREAK.
’location.href=\”absen. php\”’>
?> if ($confirm == ‘Yes’) { $q = “update tr_absen set remark=’’ where id_user=upper(‘ $user_id’) and date (time_in)=current_date “; $r = pg_query($conn, $q);
Penjelasan source code: Kita menggunakan satu file saja (absen.php) untuk semua kebutuhan kita. Source absen.php ini jauh lebih panjang daripada absen.sh karena perbedaan cara kerja aplikasi web dan desktop. Semua tugas (task), kita lewatkan dengan nama yang berbeda dan oleh karena itu, di absen.php, kita akan memeriksa $_REQUEST[‘task’]. Semua form kita gunakan method POST dan semua data akan dilewatkan. Apabila diperlukan, kita akan menggunakan INPUT berupa HIDDEN sehingga perpindahan lintas form tetap mengandung informasi yang dibutuhkan. Untuk konfirmasi, kita tidak menggunakan Javascript, namun tetap menggunakan form HTML. Untuk hasil query, kita akan periksa baris yang didapat dengan pg_num_rows() dan akan memeriksa field yang bersangkutan setelah dapatkan array dengan pg_fetch_array().