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).
Tidak ada komentar:
Posting Komentar