phpmyadim datetime 값과 여분필드 시간 데이터 값 차이..

phpmyadim datetime 값과 여분필드 시간 데이터 값 차이..

QA

phpmyadim datetime 값과 여분필드 시간 데이터 값 차이..

답변 2

본문

안녕하세요 출석게시판을 제작하고있는데 해당 시간차이가 나서 혹시 해결방법이 있을지 해서 질문드립니다.

 

변수로 

 

$selday = $year.sprintf("%02d",$month).sprintf("%02d",$day);

 

form 안에

 

<input type="hidden" name="wr_1" value="<?php echo $selday ?>">

하니

 

2112614352_1717135791.4353.png

 

이렇게 몇초 혹은 15초까지도 차이가 나더라구요 그래서 아래에

 

 


$today = $yesterday['year'].sprintf("%02d",$yesterday['mon']).sprintf("%02d",$yesterday['mday']);
    // 전날 출석체크
    $row = sql_fetch("select wr_id, wr_10 from $write_table where mb_id = '{$member['mb_id']}' and wr_is_comment = '0' and wr_datetime = '{$today}' ");
    if($row['wr_id']) { //출석했을 경우 - 개근
        $wr_10 = (int)$row['wr_10'] + 1; //전날 개근일수에 1일 더함
    } else { //아닐 경우 오늘 출석만 반영
        $wr_10 = 1;
    }

 

update.tail.php 파일에 wr_1 값으로  계산되는 방식이라서 12시 땡하자 마자 출석을 해버리면

wr_datetime 에는 오늘 날짜인데 wr_1데이터는 몇초 늦게 입력되서 어제날자로 잡혀 개근일이 초기화 되버리는 경우가 있네요 ㅠㅠ

 

해결방법이있을까요

 

아니면 12시 1분 ~ 11시 59분 까지만 출석버튼을 누를수있게 설정하는 방법이있거나 예제가 있으면 주소링크 부탁드립니다 혼자해결하려니 한계가 와서 질문드립니다

 

감사합니다.

 

이 질문에 댓글 쓰기 :

답변 2

아래의 코드를 참고해 보시겠어요..

 

update.tail.php

 

$today = date("Ymd");
$now = date("H:i");
$startTime = "00:01";
$endTime = "23:59";

// 출석 가능한 시간 범위 확인
if ($now >= $startTime && $now <= $endTime) {
    // 전날 출석체크
    $yesterday = date("Ymd", strtotime("-1 day"));
    $row = sql_fetch("SELECT wr_id, wr_10 FROM $write_table WHERE mb_id = '{$member['mb_id']}' AND wr_is_comment = '0' AND wr_1 = '$yesterday'");

    if ($row['wr_id']) { // 출석했을 경우 - 개근
        $wr_10 = (int)$row['wr_10'] + 1; // 전날 개근일수에 1일 더함
    } else { // 아닐 경우 오늘 출석만 반영
        $wr_10 = 1;
    }

    // 출석 데이터 업데이트
    sql_query("UPDATE $write_table SET wr_10 = '$wr_10' WHERE wr_id = '{$row['wr_id']}'");
} else {
    echo '출석 시간은 00:01 ~ 23:59입니다.';
    exit;
}
 

<?php
$allday = date("Ymd");
$allnow = date("H:i");
$startTime = "00:00";
$endTime = "00:02";
?>
<?php if ($allnow >= $startTime && $allnow <= $endTime) {?>
<button type="button" onclick="swal('출석시간 이후 출석가능','00시 02분 이후','info')" class="check_btn">출석</button>
<?} else {?>
<?php if ($is_member) {?>
<button type="submit" class="check_btn" id="list_write_submit" <?php echo $wr_disabled; ?> accesskey="s">출석</button>
<?} else {?>
<button type="button" onclick="swal('회원만 이용 가능합니다.','로그인하세요','info')" class="check_btn">출석</button>
<?}?>
<?}?>

출석을 시도할때 어떤 이유에서 서버 딜레이가 생기고

그로 인해 넘긴 값이 바로 등록 되지 못하면서 차이가 발생하는 가능성이 있을것 같습니다.

 

위 상황을 가정하면

12시 1분 ~ 11시 59분 까지만 출석버튼을 누를수있게 설정하는 방법은

해결책이 되지 않을것 같습니다.

 

https://github.com/gnuboard/gnuboard5/blob/master/bbs/write_update.php#L134

사용하는 스킨 경로에 write_update.head.skin.php 파일을 생성하고

다음처럼 적용하는 방법이 도움이 될지 모르겠습니다.


<?php
$wr_1 = G5_TIME_YMDHIS;
?>

서버 딜레이가 생겨서 저렇게 처리되는거 같더라구요

그래서

"위 상황을 가정하면

12시 1분 ~ 11시 59분 까지만 출석버튼을 누를수있게 설정하는 방법은

해결책이 되지 않을것 같습니다. "

이방법으로 일단 처리를 해뒀는데


  $tmp = sql_fetch("select count(wr_id) as cnt from {$write_table} where wr_is_comment = 0 and wr_reply = '' and mb_id = '{$member['mb_id']}' and left(wr_datetime,10) = '".G5_TIME_YMD."'");

if (intval($tmp['cnt']) > 0) {
                alert("이미 출석 하였습니다.");
                goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table));
            }


헤드 파일은 이미 생성해서 저렇게 짜여저 있는데 헤드파일 에서 w_1 값을 처리 하도록 해봤는데도 시간대가 맞지 않더라구요 ㅠㅠ

그래서 텀을 주고 하려구요 서버 문제생기지 않는이상 2분차이는 안날거같아서 ㅠㅠ

답변 감사드립니다.

채택을 두개할수있으면 좋으련만 ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 193
© SIRSOFT
현재 페이지 제일 처음으로