Anda di halaman 1dari 6

Sistem Absensi Berbasiskan Web PHP

Setelah berjuang cukup lama untuk menemukan metode ini akhirnya gua menemukan juga
cara ini(kalau sudah ada yang menemukan terlebih dulu mohon ijin gua publikasikan ya).

Ya, kali ini gua mau posting bagaimana membuat sistem absensi web based yang berbasiskan
PHP. Sistem absensi gua pakai karena pengen terlihat lebih keren aja sih, hehehe. Gak, bukan
ingin terlihat lebih keren aja tapi karena gua dapat tugas dari Bos gua buat bikin sistem
absensi yang secara otomatis bisa menghitung uang makan, gaji, dll.

Maka setelah bertanya kepada Mbah Google, dapat juga ide(sebenarnya cuma logikanya aja
sih). Dan dari pada gua berpanjang lebar langsung aja yuk gua postingin script programnya.
Check this out :

Script form input absensi.
<style type="text/css">
table
{
border: 0px solid #000000;
}
th
{
background-color : #FF0000;
color : #FFFFFF;
}
</style>

<?php
session_start();
include "../config/connection.php";
include "../config/libary.php";
include "../config/fungsi_indotgl.php";

//Apabila variabel session masih kosong (user belum login)
if (empty($_SESSION["namauser"]) AND
empty($_SESSION["passuser"])) {
echo "<p><h1 align=center>To access this page, you must login</h1></p><br>";
echo "<a href=form_login.php><b><h2 align=center>Login</h2></b></a>";
}

//Apabila sudah login dengan benar maka terbentuklah session
else {

$user = $_SESSION["namauser"];

$tampil = mysql_query("SELECT * FROM user_mis WHERE username='$user'");
$r = mysql_fetch_array($tampil);
$p = $r['nama'];

$tampil_2 = mysql_query("SELECT * FROM karyawan WHERE nama_karyawan='$p'");
$k = mysql_fetch_array($tampil_2);

//untuk memanggil departemn dan posisi dari tabel karyawan
$departemen = $k['departemen'];
$posisi = $k['posisi'];

$waktu = gmdate('H:i' ,gmdate('U')+25200);
$date = date("Y-m-d");
$day = date("D");

//untuk menampilkan hari dan tanggal sekarang
$date_sekarang = tgl_indo($date);

$day_date = "$day/$date_sekarang";

if($waktu >='18:00')
{
include "../config/conn_hrd.php";

$tampil_3 = mysql_query("SELECT * FROM attendance WHERE nama_karyawan='$p'
AND tgl_input='$date'");
$a = mysql_fetch_array($tampil_3);

echo"<form method=POST action=update_attendance.php>
<input type=hidden name=id_attendance value='$a[id_attendance]'>
<table align=center border=1>
<tr>
<th colspan=3><font size=6>Time Out</font size></th>
</tr>
<tr>
<td width=100>Nama</td>
<td width=25 align=center> : </td>
<td width=200>$a[nama_karyawan]</td>
</tr>
<tr>
<td>Departemen</td>
<td align=center> : </td>
<td>$a[departemen]</td>
</tr>
<tr>
<td>Posisi</td>
<td align=center> : </td>
<td>$a[posisi]</td>
</tr>
<tr>
<td>Hari/Tanggal</td>
<td align=center> : </td>
<td>$a[date_time_input]</td>
</tr>
<tr>
<td>Shift</td>
<td align=center> : </td>
<td>$a[shift]</td>
</tr>
<tr>
<td>Current Time</td>
<td align=center> : </td>
<td> $waktu<input type=hidden name=time_out value='$waktu'></td>
</tr>
<tr>
<td colspan=3 align=center><input type=submit value=Submit> | <input type=button
value=Cancel onclick=self.history.back()></td>
</tr>
</table>
</form>";
}
else
{
echo"<form method=POST action=input_attendance.php>
<table align=center border=1>
<tr>
<th colspan=3><font size=6>Time In</font size></th>
</tr>
<tr>
<td width=100>Nama</td>
<td width=25 align=center> : </td>
<td width=200>$p<input type=hidden name=nama_karyawan value='$p'></td>
</tr>
<tr>
<td>Departemen</td>
<td align=center> : </td>
<td>$departemen<input type=hidden name=departemen value='$departemen'></td>
</tr>
<tr>
<td>Posisi</td>
<td align=center> : </td>
<td>$posisi<input type=hidden name=posisi value='$posisi'></td>
</tr>
<tr>
<td>Hari/Tanggal</td>
<td align=center> : </td>
<td> $day_date<input type=hidden name=tgl_input value='$date'><input type=hidden
name=date_time_input value='$day_date'></td>
</tr>
<tr>
<td>Shift</td>
<td align=center> : </td>
<td><select name=shift>
<option value=0 selected>-- Shift --</option>
<option value='Shift I(09.00-18.00)'>Shift I(09.00-18.00)</option>
<option value='Shift II(10.00-19.00)'>Shifth II(10.00-19.00)</option>
</select></td>
</tr>
<tr>
<td>Current Time</td>
<td align=center> : </td>
<td> $waktu<input type=hidden name=time_in value='$waktu'></td>
</tr>
<tr>
<td colspan=3 align=center><input type=submit value=Submit> | <input type=button
value=Cancel onclick=self.history.back()></td>
</tr>
</table>
</form>";
}

}

Hasil jadi form nya :
form absen jam masuk kerja

form absen jam pulang kerja



OK setelah jadi formnya mari kita buat script untuk input ke database di Mysql nya. Untuk
scriptnya sendiri gua pisahin jadi 2 karena eh karena ada absen masuk dan absen pulang. Jadi
buat script untuk input jam masuknya dulu, monggo di lihat-lihat dulu script input jam masuk
di bawah ini.

Script input jam masuk
//menangkap variabel dari shift dan time in
$shift = $_POST['shift'];
$time_in = $_POST['time_in'];

//Logika untuk memberi keterangan terlambat masuk kerja apa tidak
if(($shift =='Shift I(09.00-18.00)') AND ($time_in >='09:07'))
{
$keterangan="Terlambat";
}
else if(($shift =='Shift II(10.00-19.00)') AND ($time_in >='10.07'))
{
$keterangan="Terlambat";
}
else
{
$keterangan="Masuk Kerja";
}

mysql_query("INSERT INTO attendance(tgl_input,
date_time_input,
nama_karyawan,
departemen,
posisi,
shift,
time_in,
keterangan)
VALUES('$_POST[tgl_input]',
'$_POST[date_time_input]',
'$_POST[nama_karyawan]',
'$_POST[departemen]',
'$_POST[posisi]',
'$_POST[shift]',
'$_POST[time_in]',
'$keterangan')");


Nah yang terakhir, yaitu script untuk input jam pulang kerja

Script input jam pulang kerja
mysql_query("UPDATE attendance SET id_attendance = '$_POST[id_attendance]',
time_out = '$_POST[time_out]'
WHERE id_attendance = '$_POST[id_attendance]'");


Adapun absensi web based ini ada kelebihan dan kekurangannya, dan gua kasih kelebihannya
dulu.
Kelebihan :
Dapat di akses kapanpun dan dimanapun. Ini adalah kelebihan sistem absensi web
based yang tidak ditemui pada jenis sistem absensi lainnya. Perusahaan yang
mempunyai cabang di area lain atau divisi yang berlokasi di daerah dapat
menggunakan "all in one" absensi karena sistem dapat di akses melalui internet yang
kemudian dapat di manage oleh staff HR dan pimpinan kantor.
Data yang diperoleh akurat. Username dan password untuk absen hanya dapat di
akses oleh masing-masing karyawan itu sendiri untuk menjaga privasi. Itu berarti data
absensi yang masuk ke sistem akurat.
Kekurangan :
Di balik dari dua kelebihan utamanya, absensi web based juga mempunyai satu kekurangan
utama, yaitu error atau tidak dapat di akses jika koneksi internet down karena gangguan dari
penyedia jasa internet atau cuaca yang buruk. Lokasi yang terpencil juga salah satu penyebab
utama absensi dengan sistem web based tidak dapat digunakan. Selain itu berasal dari
karyawan itu sendiri yang bisa titip absen dengan memberikan username dan password
kepada karyawan lain.

Terlepas dari kelebihan dan kekurangannya, absensi dengan sistem web based termasuk
mudah digunakan. Karena karyawan tinggal login ke sistem absensi dengan memasukkan
username dan password yang sudah diberikan sebelumnya oleh staff IT, kemudian tinggal
klik tombol submit dan masuklah data absen mereka ke dalam database.

Sistem yang saya buat ini masih sederhana, dan masih perlu pengembangan. Bila pembaca
ingin memberikan masukan agar sistem absensi web based ini menjadi lebih baik lagi dengan
senang hati saya menerimanya.

Semua ciptaan manusia tidak ada yang sempurna. Kalau kata Kang Soleh Solihun sih
"Manusia tidak ada yang sempurna, kesempurnaan hanya milik Allah SWT dan Andra & The
Backbone(karena Andra & The Backbone yang menciptakan lagu yang berjudul Sempurna).