insert 후 다음날 update 방법

insert 후 다음날 update 방법

QA

insert 후 다음날 update 방법

본문


 
<?php
$conn = mysqli_connect("localhost", "****", "****", "*****");
 

function executeQuery($conn, $sql) {
    if (!mysqli_query($conn, $sql)) {
        echo "에러: " . $sql . "<br>" . mysqli_error($conn);
        exit;
    }
}

    
function insertWorkTime($conn, $zzzz, $time, $ip) {
$today = date("Y-m-d");
    $check_exist_sql = "SELECT id FROM very_work_time WHERE work_total = '$zzzz' AND DATE(work_datetime) = '$today' LIMIT 1"; 
    // 오늘 work_hp 로 입력된 것이 있나 가져 옴
    // work_datetime 입력 시간을 넣는 칼럼으로 간주
    $check_exist_result = mysqli_query($conn, $check_exist_sql);
    if (mysqli_num_rows($check_exist_result) > 0) { // 오늘 인서트가 있으면 넘어가기
        return; 
    }
    // 인서트 한적이 없으면 넣기

    $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total)
                   SELECT id, work_name, work_group, '$time', '', '$time', '$ip', '$zzzz'
                   FROM very_work_list
                   WHERE work_hp = '$zzzz'";

    executeQuery($conn, $insert_sql);
}
 
function updateWorkOutTime($conn, $id, $time) {
    $update_sql = "UPDATE very_work_time SET work_outtime = '$time' WHERE id = '$id'";
    executeQuery($conn, $update_sql);
}
 
$zzzz = $_GET['cccc'];
$time = date("Y-m-d H:i:s");
$today = date("Y-m-d");
$ip = $_SERVER['REMOTE_ADDR'];
 
$check_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time WHERE work_total = '$zzzz' AND DATE(work_datetime) = '$today' ORDER BY work_datetime DESC LIMIT 1";
$check_result = mysqli_query($conn, $check_sql);
$result = mysqli_query($conn,"SELECT work_name, aaaa, bbbb FROM very_work_list where work_hp='$zzzz' ");
$row = mysqli_fetch_array($result);
$data = $row[0];
$data1 = $row[1];
$data2 = $row[2];
 
if ($check_result && mysqli_num_rows($check_result) > 0) {
    $row = mysqli_fetch_assoc($check_result);
    if (empty($row['work_outtime'])) {
        updateWorkOutTime($conn, $row['id'], $time);
        echo $data,"6", $data2;
    } else {
        insertWorkTime($conn, $zzzz, $time, $ip);
        echo $data,"6", $data1;

    }
} else {
    insertWorkTime($conn, $zzzz, $time, $ip);
    echo $data,"6", $data1;

}
?>
 

 

GET로 cccc 변수를 입력받아 출퇴근 체크를 하는 소스입니다..

정상적으로 작동하는 소스고요..

출근사 인서트  퇴근시 업데이트가 작동됩니다.

 

 

한가지 문제점이 발생이 되서.. 고수님들께 문의드립니다...

 

출근체크시 인서트가 되고

야간 근무자 출근시 출근체크는 정상적으로 이루어집니다.

문제는 퇴근의 경우인데요...

출근 체크가 된 상태에서 다음날 퇴근이 체크가 되어야 하는건데

날짜가 바뀌다보니 퇴근체크가 되지 않고

출근체크가 되어 버립니다.

따라서 출근체크만 2개가 되어 버립니다 ㅠㅠ

 

하루가 지난 출근 체크를 어떻게 인지 해야 하나요?

 

이 질문에 댓글 쓰기 :

답변 1


<?php
$conn = mysqli_connect("localhost", "****", "****", "*****");
function executeQuery($conn, $sql) {
    if (!mysqli_query($conn, $sql)) {
        echo "에러: " . $sql . "<br>" . mysqli_error($conn);
        exit;
    }
}
function insertWorkTime($conn, $zzzz, $time, $ip) {
    $today = date("Y-m-d");
    $check_exist_sql = "SELECT id FROM very_work_time WHERE work_total = '$zzzz' AND DATE(work_datetime) = '$today' LIMIT 1"; 
    $check_exist_result = mysqli_query($conn, $check_exist_sql);
    if (mysqli_num_rows($check_exist_result) > 0) { // 오늘 인서트가 있으면 넘어가기
        return; 
    }
    // 인서트 한적이 없으면 넣기
    $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total)
                   SELECT id, work_name, work_group, '$time', '', '$time', '$ip', '$zzzz'
                   FROM very_work_list
                   WHERE work_hp = '$zzzz'";
    executeQuery($conn, $insert_sql);
}
function updateWorkOutTime($conn, $id, $time) {
    $update_sql = "UPDATE very_work_time SET work_outtime = '$time' WHERE id = '$id'";
    executeQuery($conn, $update_sql);
}
$zzzz = $_GET['cccc'];
$time = date("Y-m-d H:i:s");
$today = date("Y-m-d");
$ip = $_SERVER['REMOTE_ADDR'];
$check_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time WHERE work_total = '$zzzz' ORDER BY work_datetime DESC LIMIT 1";
$check_result = mysqli_query($conn, $check_sql);
$result = mysqli_query($conn, "SELECT work_name, aaaa, bbbb FROM very_work_list WHERE work_hp='$zzzz'");
$row = mysqli_fetch_array($result);
$data = $row[0];
$data1 = $row[1];
$data2 = $row[2];
if ($check_result && mysqli_num_rows($check_result) > 0) {
    $row = mysqli_fetch_assoc($check_result);
    if (empty($row['work_outtime'])) {
        updateWorkOutTime($conn, $row['id'], $time);
        echo $data, "6", $data2;
    } else {
        insertWorkTime($conn, $zzzz, $time, $ip);
        echo $data, "6", $data1;
    }
} else {
    insertWorkTime($conn, $zzzz, $time, $ip);
    echo $data, "6", $data1;
}
?>
답변을 작성하시기 전에 로그인 해주세요.
전체 46
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT