insert, update 쿼리 병합
본문
아래 점선줄 밑으로 기재한 대로
현재는 insert용 과 updste용 php 파일 2개를 이용하고 있습니다
php 파일을 하나로 합쳐서
똑같이 작동 되게 하고 싶습니다.
어떻게 해야 할까요?
이것저것 해봐도 잘 안되서 고수님들께 문의 드립니다. ㅠㅠ
---------------------------------------------------------------------------------------------------------------
<?php
$conn = mysqli_connect("localhost", "****", "****", "****");
$zzzz = $_GET['cccc'];
$time = date("Y-m-d H:i:s"); // 현재시간 저장
$today = date("Y-m-d");
// 중복 체크 쿼리 실행
$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) {
// 중복이 없는 경우 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 . "<br>" . mysqli_error($conn);
}
}
$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 변수가 전달이 되면 아래와 같이 저장이 됩니다.
<?php
$conn = mysqli_connect("localhost", "****", "****!", "****");
$zzzz = $_GET['cccc'];
$time = date("Y-m-d H:i:s"); // 현재시간 저장
$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 )";
$result = mysqli_query($conn, $sql);
if($result === false){
echo mysqli_error($conn);
}
$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 에 시간이 업데이트 되어 집니다.
!-->!-->
답변 3
아까 b.php 파일이 퇴근이라고 하셨잖아요 ?
그럼 b.php 파일을 아래 처럼 수정 하세요
퇴근 파일 접근 시 a.php?cccc=원래파라미터&action=out 으로 강제 리다이렉트 됩니다.
<?php
if (isset($_GET['cccc'])) {
$cccc = urlencode($_GET['cccc']);
header("Location: aaa.php?cccc={$cccc}&action=out");
exit;
} else {
exit("cccc 파라미터가 없습니다.");
}
?>
도와드릴게요 혹시파라미터 추가 및 통합을 위해
저걸 호출하는 페이지의 코드를 알려주시겠습니까?
혹시 그게아니라면 방식이
a.php?cccc=test
이렇게 직접 호출하시나요?
하나더 혹시 그누기반인가요?
자체 코드인가요?
안녕하세요...
@은빛여전사 님
아래 코드대로 작성해보시겠습니까?
단. 기존 코드에서 하나의 파라미터가 추가되어야 합니다.
a.php?cccc=63B17372&action=in / a.php?cccc=63B17372&action=out
in 은 출근 / out 은 퇴근입니다.
또한 하단 코드에 구글 이미지 작성 된 것을 아까전 게시글에 보여준 출근을 캡쳐해 이미지로 올려두시고
그 경로 적어주세요
퇴근도 마찬가지이구요
또한 코드 그대로 복붙하면 안됩니다. 디비 커넥트 아이디/비번/디비는 잘 쓰셔야 합니다.
<?php
$conn = mysqli_connect("localhost", "****", "****", "****");
$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;
}
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 . "<br>" . 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 . "<br>" . mysqli_error($conn);
exit;
}
}
if($action === 'in'){
echo '<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" alt="Google Logo">';
}else{
echo '<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" alt="Google Logo">';
}
?>