insert, update 쿼리 병합 채택완료
아래 점선줄 밑으로 기재한 대로
현재는 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개
아까 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개
댓글을 작성하려면 로그인이 필요합니다.
안녕하세요...
@은빛여전사 님
아래 코드대로 작성해보시겠습니까?
단. 기존 코드에서 하나의 파라미터가 추가되어야 합니다.
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개
a.php?cccc=63B17372&action=in / a.php?cccc=63B17372&action=out
이런식으로 안드로이드에서 2가지로 보낼수 있을까요?
1가지로 밖에 전송이 안될꺼 같은데요 ㅠㅠ
출근/퇴근 어플이 따로 있어서 a.php / b.php 을 활용하고 있다...라고
그럼 저걸 띄우는(보내는) 실제 파일이 있을껀데
거기에서 위 답변처럼 하나로 합쳐서 액션을 추가 해주면 가능하겠습니다.
감사합니다..
문제는 피라미터를 2가지로 보내야 한다는 부분인데...
이걸 어찌 처리 해야 할지... 문제네요 ㅠㅠ
기존에는 폰 2개를 사용해서 피라미터를 2가지로 보낼수 있었는데요
폰이 2개가 아니라
폰을 1개만 사용해서 출근 퇴근을 처리 하고 싶은 겁니다.
NFC 프로젝트는 해본 적이 없지만, 어찌 되었던 무언가를 전송할 때
전송하기 위해서 만들어진 게 있을꺼에요
그게 없다면 전송이 불가능하고 어디로 전송할 수 없으니깐요
a.php?cccc=asdgasdg 로 전송할 수 있게 만들어진 것을 소스 추가를 해야 한다는 뜻입니다.
위 내용 자체가 이해가 조금 어려우시다면
어쩔 수 없이 둘이 분리해서 작업하는 방법 뿐입니다.
만약 액션은 추가할 수 없고 파일은 변경할 수 있다면
a.php 파일 내 에서 데이터가 있을 시 무조건 퇴근 처리 하는 방법을 택해야 겠죠?
댓글을 작성하려면 로그인이 필요합니다.
도와드릴게요 혹시파라미터 추가 및 통합을 위해
저걸 호출하는 페이지의 코드를 알려주시겠습니까?
혹시 그게아니라면 방식이
a.php?cccc=test
이렇게 직접 호출하시나요?
하나더 혹시 그누기반인가요?
자체 코드인가요?
답변에 대한 댓글 1개
어플 실행시 a.php?cccc=63B17372, b.php?cccc=63B17372
이런식으로 전송이 되도록하여 사용하였습니다.
바꾸려고 하는 방식은
안드로이드 폰을 nfc 리더기로 만들었고요
신분증을 폰에 가져다 대면
폰이 nfc 카드 내용을 읽어들인담에 특정된 문자를
a.php?cccc=63B17372 <-- 이런식으로 전송을 하면
DB 에 저장이 되는 방식입니다
현재 nfc 카드를 핸드폰에 가져다 대면 위 코드가 전송이되어
insert 가 되게 적용은 하였습니다.
지금 필요한 부분은 똑같은 코드가 전송이 될 경우
insert, update, insert, update, insert, update 이런식으로 번갈아가며 저장이 되게
해야합니다.
그누보드 기반입니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인