phpmyadim datetime 값과 여분필드 시간 데이터 값 차이..
본문
안녕하세요 출석게시판을 제작하고있는데 해당 시간차이가 나서 혹시 해결방법이 있을지 해서 질문드립니다.
변수로
$selday = $year.sprintf("%02d",$month).sprintf("%02d",$day);
form 안에
<input type="hidden" name="wr_1" value="<?php echo $selday ?>">
하니
이렇게 몇초 혹은 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;
}
출석을 시도할때 어떤 이유에서 서버 딜레이가 생기고
그로 인해 넘긴 값이 바로 등록 되지 못하면서 차이가 발생하는 가능성이 있을것 같습니다.
위 상황을 가정하면
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;
?>