테스트 사이트 - 개발 중인 베타 버전입니다

insert update 순차 적용 방법이 궁금합니다. 채택완료

은빛여전사 8개월 전 조회 1,601

미나님이 도움 주셔서

insert, update 두개의 파일을 하나로 합칠수 있게 되었습니다.

현재는   

5555.php?cccc=63B17372&action=in      전송시 in

5555.php?cccc=63B17372&action=out    전송시 out

정상적으로 DB에 저장이 됩니다.

 

 

변경하고자 하는 부분은요

5555.php?cccc=63B17370     전송시 in

5555.php?cccc=63B17376     전송시 in

5555.php?cccc=63B17377     전송시 in

5555.php?cccc=63B17378     전송시 in

5555.php?cccc=63B17379     전송시 in

5555.php?cccc=63B17372     전송시 in

5555.php?cccc=63B17372     전송시 out

5555.php?cccc=63A17373     전송시 in

5555.php?cccc=63B17372     전송시 in

5555.php?cccc=63B17374     전송시 in

5555.php?cccc=63A17373     전송시 out

5555.php?cccc=63A17373     전송시 in

5555.php?cccc=63B17374     전송시 out

5555.php?cccc=63B17372     전송시 out

 

위와 같이 순차적으로 전송될때  동일한 값이 전송이 될경우

in, out이 번갈아 가면서 작동되게 하고 싶습니다.

 

어떻게 해야 하나요?

 

 

</p>

<p> </p>

<p><?php

$conn = mysqli_connect("localhost", "sun76841", "ZXASqw121!", "sun76841");

 

$zzzz = $_GET['cccc'];

$action = isset($_GET['action']) ? $_GET['action'] : 'in';

$time = date("Y-m-d H:i:s"); // 현재시간 저장

$today = date("Y-m-d");

 

if ($action !== 'in' && $action !== 'out') {

    echo "잘못된 action 값입니다.";

    exit;

}</p>

<p> 

if ($action === 'in') {

    // 출근 처리 (중복 체크 후 insert)

    $check_sql = "SELECT COUNT(*) FROM very_work_time WHERE work_total = '$zzzz' AND DATE(work_datetime) = '$today'";

    $check_result = mysqli_query($conn, $check_sql);

    $check_row = mysqli_fetch_row($check_result);

    if ($check_row[0] == 0) {

        $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', '{$_SERVER['REMOTE_ADDR']}', '$zzzz'

                FROM very_work_list

                WHERE work_hp = '$zzzz'";

       

        if (!mysqli_query($conn, $sql)) {

            echo "에러: " . $sql . "
" . mysqli_error($conn);

            exit;

        }

    }

} else {

    // 퇴근 처리 (update)

    $sql  = "UPDATE very_work_time

             SET work_outtime = '$time'

             WHERE id IN (

                 SELECT a.id FROM (

                     SELECT id FROM very_work_time WHERE work_total = '$zzzz' ORDER BY work_datetime DESC LIMIT 1

                 ) a

             )";

    if (!mysqli_query($conn, $sql)) {

        echo "에러: " . $sql . "
" . mysqli_error($conn);

        exit;

    }

}

 

    if($action === 'in'){

        echo '<img src="<a href="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"" target="_blank" rel="noopener noreferrer">https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"</a> alt="Google Logo">';

    }else{

        echo '<img src="<a href="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"" target="_blank" rel="noopener noreferrer">https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"</a> alt="Google Logo">';

    }

 

?></p>

<p> </p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
8개월 전

안녕하세요...

@은빛여전사 님

 

본문에 아이디/비밀번호 노출되어있으니, 꼭 변경하시길 바라며,

아래 코드 참조 하시길 바랍니다.

 

출근 이력이 있다면 퇴근 / 퇴근 이후 다시 찍었다면 출근 형태입니다.

코드가 바뀌었으며 액션이 삭제 되었습니다.

 

덧. 미나 아니고 미니 입니다 하하^^;

 

</span></p>

<p><?php</p>

<p>$conn = mysqli_connect("localhost", "sun76841", "ZXASqw121!", "sun76841");</p>

<p> </p>

<p>function executeQuery($conn, $sql) {</p>

<p>    if (!mysqli_query($conn, $sql)) {</p>

<p>        echo "에러: " . $sql . "
" . mysqli_error($conn);</p>

<p>        exit;</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>function insertWorkTime($conn, $zzzz, $time, $ip) {</p>

<p>    $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total)</p>

<p>                   SELECT id, work_name, work_group, '$time', '', '$time', '$ip', '$zzzz'</p>

<p>                   FROM very_work_list</p>

<p>                   WHERE work_hp = '$zzzz'";</p>

<p>    executeQuery($conn, $insert_sql);</p>

<p>}</p>

<p> </p>

<p>function updateWorkOutTime($conn, $id, $time) {</p>

<p>    $update_sql = "UPDATE very_work_time SET work_outtime = '$time' WHERE id = '$id'";</p>

<p>    executeQuery($conn, $update_sql);</p>

<p>}</p>

<p> </p>

<p>$zzzz = $_GET['cccc'];</p>

<p>$time = date("Y-m-d H:i:s");</p>

<p>$today = date("Y-m-d");</p>

<p>$ip = $_SERVER['REMOTE_ADDR'];</p>

<p> </p>

<p>$check_sql = "SELECT id, work_intime, work_outtime FROM very_work_time WHERE work_total = '$zzzz' AND DATE(work_datetime) = '$today' ORDER BY work_datetime DESC LIMIT 1";</p>

<p>$check_result = mysqli_query($conn, $check_sql);</p>

<p> </p>

<p>if ($check_result && mysqli_num_rows($check_result) > 0) {</p>

<p>    $row = mysqli_fetch_assoc($check_result);</p>

<p>    if (empty($row['work_outtime'])) {</p>

<p>        updateWorkOutTime($conn, $row['id'], $time);</p>

<p>        echo '<img src="<a href="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"" target="_blank" rel="noopener noreferrer">https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"</a> alt="퇴근 처리 완료">';</p>

<p>    } else {</p>

<p>        insertWorkTime($conn, $zzzz, $time, $ip);</p>

<p>        echo '<img src="<a href="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"" target="_blank" rel="noopener noreferrer">https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"</a> alt="재출근 처리 완료">';</p>

<p>    }</p>

<p>} else {</p>

<p>    insertWorkTime($conn, $zzzz, $time, $ip);</p>

<p>    echo '<img src="<a href="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"" target="_blank" rel="noopener noreferrer">https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"</a> alt="출근 처리 완료">';</p>

<p>}</p>

<p>?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

은빛여전사
8개월 전
감사합니다..

댓글을 작성하려면 로그인이 필요합니다.

P
8개월 전

in/out 인자를 받지 않으니 위에서 DB상에 해당하는 데이터가 있는지 확인하고 직접 in / out 값을 만들어야겠죠?

select count(*) as cnt FROM very_worktime WHERE work_total='$zzzz' AND work_outtime='';

쿼리를 수행하시고 cnt 값이 1 이상이면 $action = 'out', 0이면 in 처리하시면 되겠네요

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인