if($member['mb_level'] == 3 and $is_member){ // 레벨이 3일때
if($point['po_content'] == '강의실 입장' and (G5_TIME_YMDHIS - $point['po_datetime'] >30)){ ★
$sql = "update {$g5['member_table']} set mb_level = 2 where mb_level = 3 and mb_id = '{$member['mb_id']}' ";
sql_query($sql);
}
}
login_check.php 에 들어갈 코드입니다.
처음 포인트로 강의실에 입장하면 권한이 3이 되고 이후 30일이 지나면 다시 권한이 2로 내려가는 로직을 짜고있습니다.
(오늘날짜) - (마지막으로 강의실로 입장하여 권한이 3이 되었던 날짜) > 30 이 되야할 것 같은데
저기 별표가 있는 줄이 헷갈립니다.
고수님들의 의견을 구합니다.
답변 3개 / 댓글 4개
포인트에 기록된 명칭이 '강의실 입장' 이고
현재일자가 포인트사용일보다 30일이 경과하면
처리하려는것 같은데요
제대로 작동안할것 같습니다.
왜냐면.. 시분초 까지 함께보는 값이라 시분초의 차이가 30이 아니라
yyyymmddhhmmss 의 구분값이라서
구분해야할 값이 일자만가지고 계산해야 정확합니다.
시분초는 제외해야할거같네요
$point['po_datetime'] 이 아닌
쿼리를 불러올때 po_datetime 의 값을
replace(date(po_datetime),'-','') as po_date 와 같이 변경하고
(G5_TIME_YMD - $point['po_date']) > 30 으로 변경해야 정상작동할겁니다.
답변에 대한 댓글 2개
$point를 가져오는기준이 먼저 정리가 되어야합니다.
사용한 포인트중 강의실 입장에 사용한 최종일자를 기준으로 가져와야 할듯합니다.
login_check 파일에서 처리를 할 경우 자동로그인 사용자는 체크되지 않는 문제가 있습니다.
답변에 대한 댓글 1개
그럼 어느 곳에 구문을 넣으면 잘 동작하나요?
테스트도 쉽지 않네요 ㅋㅋ
답변에 대한 댓글 1개
$sql = "update {$g5['member_table']} set mb_level = 2 where TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(po_datetime)) > 30 and po_content = '강의실 입장' and mb_level = 3 and mb_id = '{$member['mb_id']}' ";
sql_query($sql);
}
이렇게 고쳐봤습니다. 마지막에 강의실에 입장했던 날짜를 참조하도록만 하면 해결 될 것 같은데
맞게 동작할까요?
답변을 작성하려면 로그인이 필요합니다.
TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(po_datetime)) > 30
코드를 뚫어져라 보다보니
궁금한것은 마지막으로 강의실에 입장하여 권한이 3이 된 날짜를 참조하여 계산하는 것인데
저렇게 코드를 작성하면 예전의 모든 강의실에 입장했던 날짜를 참조하여 틀리게 계산될 것인지
헷갈립니다.
도움 말씀 감사합니다.