get_point_sum 함수 내용 채택완료
</p>
<p>// 유효기간이 있을 때 기간이 지난 포인트 expired 체크</p>
<p> $sql = " update {$g5['point_table']}</p>
<p> set po_expired = '1'</p>
<p> where mb_id = '$mb_id'</p>
<p> and po_expired <> '1'</p>
<p> and po_expire_date <> '9999-12-31'</p>
<p> and po_expire_date < '".G5_TIME_YMD."' ";</p>
<p> sql_query($sql);</p>
<p>
이 코드가 실행되는 때가 언제인가요?
이코드가 실행되기전 위에서 po_exipired 를 1로 바꿔주니까...
po_exipired가 1이 아닐 때가 있을까요?
답변 4개
위코드의 윗부분 코드는 insert 구문이므로 신규 포인트를 입력하는것이고
현재 표시한 코드는 기존 포인트중에서 유효기간이 만료된 포인트를 1로 변경해주는것입니다.
1. 만료된 포인트를 합산혀야 신규 마이너스 포인트로 처리
2. 1에서 만료된 포인트들을 실제 만료처리
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
만료되는 포인트를 총 포인트에서 마이너스 처리하고 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개
와 드디어 이해했습니다 ㅠㅠ
저 이해시키느라 고생 진짜 많으셨습니다..
감사합니다 이제 이해했어요 ㅜㅜ
댓글을 작성하려면 로그인이 필요합니다.
$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로 처리하여 다음번에는 제외할려고 업데이트를 하는 것입니다.
답변에 대한 댓글 2개
유효기간이 지난 포인트가 있으면 if문이 실행되고
if문 실행되면 if문 안에 $po_expired 변수, 1이 있어서
insert 할 때 그냥 po_expired 를 1로 추가하니까
만료되는 포인트를 총 포인트에서 마이너스 처리하고 insert 할 때 po_expired 를 1로 추가했으니까 반복해서 마이너스가 안되는거 아닌가요? ㅜㅜ
포인트가 유효기간이 있을 때 (포인트 제도)
소멸될 수 있는 포인가 없을 때만 실행되는거 맞죠?
댓글을 작성하려면 로그인이 필요합니다.
and po_expired <> '1'
po_expired 값이 1이된건 수정하지 않으므로 1번에서 추가한건 영향을 받지 않습니다.
답변에 대한 댓글 2개
지금 좀 헷갈리는게
insert 문으로 포인트가 소멸되고 총 포인트의 내용이 추가되는건데
update문은 만료기간이 지난 것들의 포인트 만료를 1로 바꿔주는건데..
if($expire_point > 0)
$expire_point === 포인트 유효기간이 지난 포인트 중에서 남은 포인트
즉, 유효기간이 지났는데 남은포인트가 있으면 소멸될 수 있는 포인트라고 하고 그 포인트가 있으면 if문 실행
그다음 insert 문을 통해 전체 포인트에서 남은 포인트를 빼주고 총 포인트랑 남은포인트 를 추가해주는데
update문은 왜 있는건지 지금 너무 헷갈려요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
2번에서 실제로 처리해주는 거였네요!!
늘 답변 감사합니다~~