get_point_sum 함수 내용

get_point_sum 함수 내용

QA

get_point_sum 함수 내용

본문


// 유효기간이 있을 때 기간이 지난 포인트 expired 체크
        $sql = " update {$g5['point_table']}
                    set po_expired = '1'
                    where mb_id = '$mb_id'
                      and po_expired <> '1'
                      and po_expire_date <> '9999-12-31'
                      and po_expire_date < '".G5_TIME_YMD."' ";
        sql_query($sql);

이 코드가 실행되는 때가 언제인가요?

이코드가 실행되기전 위에서 po_exipired 를 1로 바꿔주니까...

po_exipired가 1이 아닐 때가 있을까요?

이 질문에 댓글 쓰기 :

답변 4

위코드의 윗부분 코드는 insert 구문이므로 신규 포인트를 입력하는것이고

 

현재 표시한 코드는 기존 포인트중에서 유효기간이 만료된 포인트를 1로 변경해주는것입니다.

 

1. 만료된 포인트를 합산혀야 신규 마이너스 포인트로 처리

 

2. 1에서 만료된 포인트들을 실제 만료처리

and po_expired <> '1'

po_expired 값이 1이된건 수정하지 않으므로 1번에서 추가한건 영향을 받지 않습니다.

update 문과 insert 문중에서 뭐가 먼저 동작하는거죠?
지금 좀 헷갈리는게
insert 문으로 포인트가 소멸되고 총 포인트의 내용이 추가되는건데
update문은 만료기간이 지난 것들의 포인트 만료를 1로 바꿔주는건데..

insert문이 동작하려면 if문의 조건이 먼저 충족되어야하는데
if($expire_point > 0)
$expire_point  === 포인트 유효기간이 지난 포인트 중에서 남은 포인트
즉, 유효기간이 지났는데 남은포인트가 있으면 소멸될 수 있는 포인트라고 하고 그 포인트가 있으면 if문 실행
그다음 insert 문을 통해 전체 포인트에서 남은 포인트를 빼주고 총 포인트랑 남은포인트 를 추가해주는데
update문은 왜 있는건지 지금 너무 헷갈려요

$expire_point = get_expire_point($mb_id);

=> and po_expired = '0'

=> po_expired 값이 0인걸 합산해서 if 아래구문 실행

=> 만료된 값에 po_expired 를 1로 변경해주지 않는다면 get_point_sum 함수를 실행할때마다

=> 0인값을 누적으로 하므로 만료된 값들이 계속 중복으로 마이너스 처리됨

=> 만료되어 마이너스 처리한 포인트는 po_expired 값을 1로 처리하여 다음번에는 제외할려고 업데이트를 하는 것입니다. 

근데 update 문에서 1로 안바꿔줘도
유효기간이 지난 포인트가 있으면 if문이 실행되고
if문 실행되면 if문 안에 $po_expired 변수, 1이 있어서
insert 할 때 그냥 po_expired 를 1로 추가하니까
만료되는 포인트를 총 포인트에서 마이너스 처리하고 insert 할 때 po_expired 를 1로 추가했으니까 반복해서 마이너스가 안되는거 아닌가요? ㅜㅜ

만료되는 포인트를 총 포인트에서 마이너스 처리하고 insert 할 때 po_expired 를 1로 추가했으니까 반복해서 마이너스가 안되는거 아닌가요? ㅜㅜ

 

=> 만료된 포인트 합산을 해서 신규 기록하지만 만료된 포인트 내역들은 그대로 있음

=> 만료됨 포인트를 1로 업데이트 해주지 않으면 다음번 만료계산시에도 계속 합산되서 마이너스됨

 

예)

10 <= 만료

20 <= 만료
=> 30포인트를 만료후 마이너스 입력

=> 1로 업데이트 해주지 않으면 10, 20은 계속 만료포인트임

=> 이후 30포인트가 만료됨

 

만료처리를 하지 않은경우 (0인 값을 합산함)

10 <= 만료 (po_expired : 0)

20 <= 만료 (po_expired : 0)

30 <= 만료 (po_expired : 0)

=> 60포인트가 만료 처리됨

=> 이미 30포인트가 마이너스 되었으나 다시 30포인트가 추가로 마이너스됨

 

만료처리를 한경우 (0인 값을 합산하므로 1은 제외)

10 <= 제외 (po_expired : 1)

20 <= 제외 (po_expired : 1)

30 <= 만료 (po_expired : 0)

=> 10, 20은 만료처리하였으므로 30포인트만 만료 처리됨

 

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT