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

insert, update 쿼리 병합 채택완료

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

아래 점선줄 밑으로 기재한 대로

현재는 insert용 과 updste용 php 파일 2개를 이용하고 있습니다

 

php 파일을 하나로 합쳐서 

똑같이 작동 되게 하고 싶습니다.

어떻게 해야 할까요?

이것저것 해봐도 잘 안되서 고수님들께 문의 드립니다. ㅠㅠ

 

 

---------------------------------------------------------------------------------------------------------------

</p>

<p><?php

$conn = mysqli_connect("localhost", "****", "****", "****");</p>

<p>

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

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

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

 </p>

<p>// 중복 체크 쿼리 실행

$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);</p>

<p>if ($check_row[0] == 0) {

    // 중복이 없는 경우 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', '{$_SERVER['REMOTE_ADDR']}', '$zzzz'

                   FROM very_work_list

                   WHERE work_hp = '$zzzz'";

    

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

        echo "";

    } else {

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

    }

}</p>

<p>$result = mysqli_query($conn,"SELECT work_name FROM very_work_list where work_hp='$zzzz' ");

 

$row = mysqli_fetch_array($result);

$data = $row[0];

 

if($data){

echo $data;

}</p>

<p>

?></p>

<p>

 

위 php 파일로 63B17372 변수가 전달이 되면 아래와 같이 저장이 됩니다.

http://sir.kr/data/editor/2502/2039449303_1740708664.9045.jpg" width="100%" />

 

 

 

 

 

</p>

<p> </p>

<p><?php

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

<p>

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

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

<p> </p>

<p>$sql  = "UPDATE very_work_time

SET work_outtime = '$time'

WHERE id IN (

    select a.id 

    from(

  SELECT * FROM very_work_time WHERE  work_total = '$zzzz' ORDER BY work_datetime DESC LIMIT 1 ) a )";</p>

<p>

$result = mysqli_query($conn, $sql);

if($result === false){

    echo mysqli_error($conn);

}</p>

<p>$result = mysqli_query($conn,"SELECT work_name FROM very_work_list where work_hp='$zzzz' ");

 

$row = mysqli_fetch_array($result);

$data = $row[0];

 

if($data){

echo $data;

}

위 php 파일로 63B17372 변수가 전달이 되면 아래와 같이 work_outtime  에 시간이 업데이트 되어 집니다.

http://sir.kr/data/editor/2502/2039449303_1740711052.0162.jpg" width="100%" />

 

 

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

답변 3개

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

아까 b.php 파일이 퇴근이라고 하셨잖아요 ?

 

그럼 b.php 파일을 아래 처럼 수정 하세요

 

퇴근 파일 접근 시 a.php?cccc=원래파라미터&action=out 으로 강제 리다이렉트 됩니다.

 

</p>

<p><?php</p>

<p>if (isset($_GET['cccc'])) {</p>

<p>    $cccc = urlencode($_GET['cccc']);</p>

<p>    header("Location: aaa.php?cccc={$cccc}&action=out");</p>

<p>    exit;</p>

<p>} else {</p>

<p>    exit("cccc 파라미터가 없습니다.");</p>

<p>}</p>

<p>?></p>

<p>

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

답변에 대한 댓글 1개

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

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

8개월 전

안녕하세요...

@은빛여전사 님 

 

아래 코드대로 작성해보시겠습니까?

단. 기존 코드에서 하나의 파라미터가 추가되어야 합니다.

a.php?cccc=63B17372&action=in        /  a.php?cccc=63B17372&action=out

 

in 은 출근 / out 은 퇴근입니다.

또한 하단 코드에 구글 이미지 작성 된 것을 아까전 게시글에 보여준 출근을 캡쳐해 이미지로 올려두시고

그 경로 적어주세요

 

퇴근도 마찬가지이구요

또한 코드 그대로 복붙하면 안됩니다. 디비 커넥트 아이디/비번/디비는 잘 쓰셔야 합니다.

 

</p>

<p><?php</p>

<p>$conn = mysqli_connect("localhost", "****", "****", "****");</p>

<p> </p>

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

<p>$action = isset($_GET['action']) ? $_GET['action'] : 'in';</p>

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

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

<p> </p>

<p>if ($action !== 'in' && $action !== 'out') {</p>

<p>    echo "잘못된 action 값입니다.";</p>

<p>    exit;</p>

<p>}</p>

<p>

 </p>

<p>if ($action === 'in') {</p>

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

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

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

<p>    $check_row = mysqli_fetch_row($check_result);</p>

<p>    if ($check_row[0] == 0) {</p>

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

<p>                FROM very_work_list</p>

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

<p>       </p>

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

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

<p>            exit;</p>

<p>        }</p>

<p>    }</p>

<p>} else {</p>

<p>    // 퇴근 처리 (update)</p>

<p>    $sql  = "UPDATE very_work_time</p>

<p>             SET work_outtime = '$time'</p>

<p>             WHERE id IN (</p>

<p>                 SELECT a.id FROM (</p>

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

<p>                 ) a</p>

<p>             )";</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>    if($action === 'in'){</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="Google Logo">';</p>

<p>    }else{</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="Google Logo">';</p>

<p>    }</p>

<p> </p>

<p>?></p>

<p>

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

답변에 대한 댓글 4개

은빛여전사
8개월 전
답변감사합니다.. 문제는
a.php?cccc=63B17372&action=in / a.php?cccc=63B17372&action=out
이런식으로 안드로이드에서 2가지로 보낼수 있을까요?
1가지로 밖에 전송이 안될꺼 같은데요 ㅠㅠ
미니님a
8개월 전
아까전에 그렇게 말씀하셨잖아요 ?
출근/퇴근 어플이 따로 있어서 a.php / b.php 을 활용하고 있다...라고
그럼 저걸 띄우는(보내는) 실제 파일이 있을껀데
거기에서 위 답변처럼 하나로 합쳐서 액션을 추가 해주면 가능하겠습니다.
은빛여전사
8개월 전
위에 올려주신 코드로 2개의 피라미터가 전송될 경우에 db 저장까지 정상작동 되네요..
감사합니다..
문제는 피라미터를 2가지로 보내야 한다는 부분인데...
이걸 어찌 처리 해야 할지... 문제네요 ㅠㅠ


기존에는 폰 2개를 사용해서 피라미터를 2가지로 보낼수 있었는데요

폰이 2개가 아니라
폰을 1개만 사용해서 출근 퇴근을 처리 하고 싶은 겁니다.
미니님a
8개월 전
아니 그게 아니라 폰으로 읽어서 데이터를 전송한다고 위에 작성해주셨잖아요 ?
NFC 프로젝트는 해본 적이 없지만, 어찌 되었던 무언가를 전송할 때
전송하기 위해서 만들어진 게 있을꺼에요
그게 없다면 전송이 불가능하고 어디로 전송할 수 없으니깐요

a.php?cccc=asdgasdg 로 전송할 수 있게 만들어진 것을 소스 추가를 해야 한다는 뜻입니다.
위 내용 자체가 이해가 조금 어려우시다면

어쩔 수 없이 둘이 분리해서 작업하는 방법 뿐입니다.

만약 액션은 추가할 수 없고 파일은 변경할 수 있다면
a.php 파일 내 에서 데이터가 있을 시 무조건 퇴근 처리 하는 방법을 택해야 겠죠?

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

8개월 전

도와드릴게요 혹시파라미터 추가 및 통합을 위해

저걸 호출하는 페이지의 코드를 알려주시겠습니까?

 

혹시 그게아니라면 방식이 

a.php?cccc=test 

이렇게 직접 호출하시나요?

 

하나더 혹시 그누기반인가요?

자체 코드인가요?

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

답변에 대한 댓글 1개

은빛여전사
8개월 전
기존에는 안드로이드 출근용, 퇴근용 어플을 2개를 사용해서
어플 실행시 a.php?cccc=63B17372, b.php?cccc=63B17372
이런식으로 전송이 되도록하여 사용하였습니다.

바꾸려고 하는 방식은
안드로이드 폰을 nfc 리더기로 만들었고요
신분증을 폰에 가져다 대면
폰이 nfc 카드 내용을 읽어들인담에 특정된 문자를
a.php?cccc=63B17372 <-- 이런식으로 전송을 하면
DB 에 저장이 되는 방식입니다

현재 nfc 카드를 핸드폰에 가져다 대면 위 코드가 전송이되어
insert 가 되게 적용은 하였습니다.

지금 필요한 부분은 똑같은 코드가 전송이 될 경우
insert, update, insert, update, insert, update 이런식으로 번갈아가며 저장이 되게
해야합니다.

그누보드 기반입니다

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

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

로그인