Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TERJAWAB WAKTU ABSENSI
#1
Mas Jawad, mau nanya.
Saya buat aplikasi absensi berbasis PHP MYSQL, disitu saat user/pegawai login otomatis TIME masuk di kolom Tabel JAM_MASUK, nah bagaimana caranya pada saat user/pegawai mau pulang TIME masuk di kolom Tabel JAM_PULANG dengan tanggal saat itu juga.
Tabel Database sperti ini :
User_id     NAMA    TANGGAL          JAM_MASUK    JAM_PULANG
  1            EVEN     09-15-2016      08.00             16.30
Reply
#2
Halo Mas Even,

untuk jam pulang, memang agak repot tergantung sistim alur yg diterapkan.
misalnya, memakai aturan dengan jika logout maka jam pulang diupdate, tapi ini mungkin tdk menjadi solusi jika user logout padahal masih dalam kerjaan atau sedang istirahat.
salah satu solusi yg baik adalah dengan menambahkan menu baru yaitu PULANG, dengan ini user juga mengetahui bahwa ini adalah untuk akses pulang absensi.

solusi lain, jika ingin secara otomatis, bisa saja setiap aktifitas nya di tanggal yg sama, maka jam pulang selalu di update.
contoh script:

PHP Code:
<?php

$user 
"DATA USER DARI DB";
//misal, kita ambil data yg tanggal nya sama dengan tanggal sekarang
$tanggal_sekarang date('Y-m-d');
// contoh hasil dr db:
$user = array(
    
'id' => 1,
    
'nama' => 'Even',
    
'tanggal' => '2016-09-19',
    
'jam_masuk' => '08:00',
    
'jam_pulang' => '' // kosong dulu
);

// perintah db untuk update jam_pulang
// diletakkan di file yg selalu tereksekusi, misal di index.php atau tergantung dimana, header/footer atau apa saja.
// contoh:
$query "
    UPDATE nama_tabel 
    SET `jam_pulang` = '"
.date('H:i')."' 
    WHERE 
        `user_id` = '"
.$user['id']."' AND `tanggal` = '".date('Y-m-d')."'
    "
;
// $user['id'] bisa diambil dari session 
Reply
#3
jika databasenya seperti ini mas :
PHP Code:
<?php
'user_id' => $row['user_id'],
'user_name' => $row['user_name'],
'tanggal' => $row['tanggal'],
'jam_masuk' => $row['jam_masuk'],
'jam_pulang' => $row['jam_pulang'],


function 
createLog($user_name$tanggal$jam_masuk$jam_pulang, ) {

    
$sq1 "INSERT INTO log SET user_name='".$user_name."', tanggal='".date('Y-m-d')."', jam='".date('H:i:s')."', data='".date('Y-m-d //l, H:i:s'strtotime($time))."'";
    
$result1 mysql_query($sq1);
    if (
$result1) {
        return 
1;
    } else {
        return 
"Error insert log data!";
    }
}
?>

terus ada proses verificationnya seperti ini :

PHP Code:
<?php

if (isset($_POST['VerPas']) && !empty($_POST['VerPas'])) {

    include 
'include/global.php';
    include 
'include/function.php';

    
$data explode(";",$_POST['VerPas']);
    
$user_id $data[0];
    
$vStamp $data[1];
    
$time $data[2];
    
$sn $data[3];
    
$tanggal = ('Y-m-d');
    
$jam_masuk date_default_timezone_set("Asia/Jakarta");
    
$jam_pulang date_default_timezone_set("Asia/Jakarta");


    
$fingerData getUserFinger($user_id);
    
$device getDeviceBySn($sn);
    
$sql1 "SELECT * FROM demo_user WHERE user_id='".$user_id."'";
    
$result1 mysql_query($sql1);
    
$data mysql_fetch_array($result1);
    
$user_name $data['user_name'];

    
$salt md5($sn.$fingerData[0]['finger_data'].$device[0]['vc'].$time.$user_id.$device[0]['vkey']);

    if (
strtoupper($vStamp) == strtoupper($salt)) {

        
$log createLog($user_name$tanggal$jam_masuk$jam_pulang$time$sn);

        if (
$log == 1) {

            echo 
$base_path."log.php?action=index";

        } else {

            echo 
$base_path."messages.php?msg=$log";

        }

    } else {

        
$msg "Parameter invalid..";

        echo 
$base_path."messages.php?msg=$msg";

    }
}
?>

untuk proses verivication nya apakah bisa dibuat seperti itu mas, saya tambahi untuk tabel jam_pulang ??
Kira2 untuk menentukan jam pulangnya harus ada script tambahan apa mas, maaaf saya newbie. jadi minta bimbingannya.
Reply
#4
Kalo enggak bagaimana cara membuat LOGIKA Waktu di PHP MYSQL
ketika klik LOGIN dengan jam yang ditentukan maka data bisa masuk di FIELD Jam_masuk dan setelah waktunya pulang maka data masuk di FIELD Jam_Pulang.
LOGIKANYA Jadi Jika Jam 06.00 s/d 09.00 data masuk di FIELD INSERT Jam_Masuk
dan Jika Jam 15.00 s/d 17.00 data masuk di FIELD INSERT Jam_Pulang
Jam Masuk dan Jam Pulang masih dalan satu Tabel.
Minta Pencerahannya Mas,,,???
Reply
#5
Oh, ini pakai alat finger print yah mas? Saya kira user nya itu login ke aplikasi lewat form Login seperti login ke forum ini atau login ke facebook.
OK, kalau fingerprint artinya, sudah pasti kalau pulang akan ke alat nya kan yah.

Di script yang mas kirimkan, itu perhatikan yg  function createLog($user_name, $tanggal, $jam_masuk, $jam_pulang, ) {
Harusnya diakhir tidak boleh ada koma seharusnya  function createLog($user_name, $tanggal, $jam_masuk, $jam_pulang) {
Tapi anehnya, kok gak sama jumlah nya dengan yg di eksekusikan? Lihat ini:
$log = createLog($user_name, $tanggal, $jam_masuk, $jam_pulang, $time, $sn);
disitu ada $time dan $sn, kalau $sn disitu gak dipakai, jadi gakusah dimasukan kedalam fungsi.

Pertanyaan selanjutnya, ditabel nya gak ada kolom jam masuk ataupun jam pulang, itu pakainya semua digabung.. kolomnya:
user_name, tanggal, jam, data

Solusi LOGIKA:
1. bikin kolom baru melalui phpmyadmin, namanya jam_pulang, yang jam masuk kita pakai jam, yang sudah dari bawaanya.
2. fungsi createLog, gak perlu pakai macam2, cukup $username dan $time saja, tanggal dan jam itu kan otomatis dari PHP, gak perlu pakai variabel.
3. berikan cek apakah $username di tanggal yg sama sudah ada data? jika iya maka update kolom jam_pulang, jika blm ada maka insert.

Solusi:
1. Eksekusi fungsi nya dengan cara:
$log = createLog($user_name, $time);

2. Fungsi nya secara LOGIKA begini:
PHP Code:
<?php
function createLog($user_name$time) {
    
// QUERY CEK
    
$sql_cek "SELECT username FROM log WHERE user_name='".$user_name."' AND tanggal='".date('Y-m-d')."'";
    
$result_cek mysql_query($sql_cek);
    
$jumlah mysql_num_rows($result_cek);
    if(
$jumlah 0) {
        
// SUDAH ADA DATA, MAKA UPDATE ISI JAM PULANG
        
$sq1 "UPDATE log SET jam_pulang='".date('H:i:s')."' WHERE user_name='".$user_name."' AND tanggal='".date('Y-m-d')."'";
        
$result1 mysql_query($sq1);
        if (
$result1) {
            return 
1;
        } else {
            return 
"Error UPDATE log data!";
        }
    } else {
        
// BELUM ADA DATA, MAKA INSERT SEBAGAI JAM MASUK
        
$sq1 "INSERT INTO log SET user_name='".$user_name."', tanggal='".date('Y-m-d')."', jam='".date('H:i:s')."', data='".date('Y-m-d //l, H:i:s'strtotime($time))."'";
        
$result1 mysql_query($sq1);
        if (
$result1) {
            return 
1;
        } else {
            return 
"Error insert log data!";
        }
    }

}
?>

Jadi, setiap user, hanya terekam satu data per satu tanggal.
Reply
#6
iya mas, ini pakai alat finger.
terima kasih solusinya mas, saya coba dl.
siiip.
Reply
#7
Terima Kasih Banyak Mas Jawad, Akhirnya Berhasil.
Jossssss...!!!!!!
Reply
#8
ini untuk absensi kantor yah om
Reply
#9
(23.09.2016, 14:09)even Wrote: Terima Kasih Banyak Mas Jawad, Akhirnya Berhasil.
Jossssss...!!!!!!

boleh minta tutorial yang dari awal nya gak omm
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)