PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

ต้องการเช็คเวลาเข้างานว่าสายหรือไม่ ถ้าสาย สายกี่นาที

ต้องการเช็คเวลาเข้างานว่าสายหรือไม่ ถ้าสาย สายกี่นาที
ต้องการเช็คเวลาเข้าทำงานของพนักงานว่าสายหรือไม่ ถ้าสาย สายกี่นาที อยากให้เวลาพนักงานลงชื่อเข้าสู่ระบบจะสามารถดูประวัติการลงเวลาเข้า-ออกงานของตนเองได้คะ ว่าสายหรือไม่ เวลาเข้าทำงานของแต่ละคนจะไม่เหมือนกันนะคะ ตอนนี้มันขึ้นของทุกคนและก็ยังเช็คสายไม่ได้คะ

นี่คือตารางที่จะใช้เช็คเวลาคะ time_in
ในตาราง employee คือ เวลาที่เข้างานของพนักงานคะ time_action
ในตาราง time_history คือ เวลาที่พนักงานลงเวลาเข้าทำงานคะ รบกวนผู้รู้ช่วยหน่อยนะคะ



โดย:  Aom00aom IP: 203.144.185.xxx วันที่: 23-11-2015 เวลา: 17:19:49

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 2
เปลี่ยนเป็นโค้ด mysql ยังไงหรอคะ รบกวนด้วยนะคะ

โดย:  Kukkik_bie IP: 203.144.185.xxx วันที่: 24-11-2015 เวลา: 10:45:26
 ความคิดเห็นที่ 1
ไว้เป็นแนวทาง ถ้าใช้ mysql ก็เปลี่ยนโค้ดนิดหน่อย จาก mysqli

<?php
function diff2time($time_a,$time_b){  
    $now_time1=strtotime($time_a);  
    $now_time2=strtotime($time_b);  
    $time_diff=abs($now_time2-$now_time1);  
    $time_diff_h=floor($time_diff/3600); // จำนวนชั่วโมงที่ต่างกัน  
    $time_diff_m=floor(($time_diff%3600)/60); // จำวนวนนาทีที่ต่างกัน  
    $time_diff_s=($time_diff%3600)%60; // จำนวนวินาทีที่ต่างกัน  
    return $time_diff_h." ชั่วโมง ".$time_diff_m." นาที ".$time_diff_s." วินาที";  
} 

$sql="
SELECT a.*,date(a.time_action) as day,
IF(action='in',time(a.time_action),'00:00:00') as t_in,
(SELECT time(b.time_action) FROM time_history b WHERE 
date(a.time_action)=date(b.time_action) AND b.action='out' AND b.em_id=a.em_id
) as t_out,
c.*
FROM time_history a,employee c WHERE 
a.em_id=c.em_id
GROUP BY day,a.em_id
";
$result = $mysqli->query($sql);
if($result){
    while($row = $result->fetch_assoc()){
        $date_time_in=$row['day']." ".$row['t_in'];
        $base_time_in=$row['day']." ".$row['time_in'];
        $date_time_out=$row['day']." ".$row['t_out'];
        $base_time_out=$row['day']." ".$row['time_out'];
        if($date_time_in>$base_time_in){
            echo "สาย ";
            echo diff2time($base_time_in,$date_time_in);
        }
        echo "<hr>";
    }
}
?>



หากต้องการระบุเลือกว่าเป้นคนๆ หรือว่าเป็น วันที่อะไร ก็ให้เพิ่ม เงื่อนไข ใน WHERE

เช่น

SELECT a.*,date(a.time_action) as day,
IF(action='in',time(a.time_action),'00:00:00') as t_in,
(SELECT time(b.time_action) FROM time_history b WHERE 
date(a.time_action)=date(b.time_action) AND b.action='out' AND b.em_id=a.em_id
) as t_out,
c.*
FROM time_history a,employee c WHERE 
a.em_id=c.em_id AND a.em_id=1 AND day='2015-11-06'
GROUP BY day,a.em_id


อื่นๆ ต้องประยุกต์เพิ่มเติม

โดย:  Ninenik IP: 1.46.204.xxx วันที่: 24-11-2015