쿼리 관련 ) 멤버포인트 차감은 안되는데.. 기간이 늘어납니다.
본문
마르스 컴퍼니님께서 도와주셔서 현재까지 코드를 완성했습니다.
제가 스타트업이라 의뢰를 맡기면 좋겠지만 금전적여유가 많이없어 도움을 청했는데 정성껏 답변해주셔서 정말 감사합니다. 여기까지 된것만 해도 어느정도 구현되서 안되면 사용할 정도로 해주셨습니다.
최종적으로는 아래와 같은내용이었는데.. 저 혼자 넘어가려 하다보니 질문을 너무 많이 했습니다.
1.현재 멤버포인트(['mb_point'])가 있는데 사용기간이(mb_3) 없으면 현재일+개월수($_POST['month'];) 추가
2.현재 멤버포인트(['mb_point'])가 있는데 사용기간이(mb_3) 있으면 남은기간(mb3)+개월수($_POST['month'];) 추가
3.현재 멤버포인트가 없으면 exit(아무것도 실행하지않고 팝업창(포인트 없습니다.))
아래 코드로 1~2번은 잘 됩니다.
근데 3번이 포인트차감은 안되는데 기간은 계속플러스가 됩니다 ㅠㅠ
<?php
if ($_POST['addPoint']||$_POST['month']) {
$addpoint = "-".$_POST['addPoint'];
$month = $_POST['month'];
//$daye = strtotime($member['mb_3'].''.$month.'month'); //mb3에 주값더하기
//$daye2 = date("Y-m-d", $daye); //mb3를 y-m-d형식으로 보여주기
if(((((int)$member['mb_point'])>0)||((int)$member['mb_point']-(int)$_POST['addPoint']))>0){ //헌재포인트가 있으면
if ((date($member['mb_3'])>=$timenow)) { // 기간이 남아있으면
insert_point($member['mb_id'] , $addpoint, '기간남음', G5_TIME_YMDHIS, $day);
$sql = "update {$g5['member_table']} set mb_3 = date_add(mb_3, interval '$month' month) where mb_id='{$member['mb_id']}' "; //기존기간에 개월수 추가
sql_query($sql);
} if((date($member['mb_3'])<$timenow)) {//기간이 없으면
insert_point($member['mb_id'] , $addpoint, '현재일', G5_TIME_YMDHIS, $day);
$sql = "update {$g5['member_table']} set mb_3 = curdate() where mb_id='{$member['mb_id']}' "; //현재일로 부터 개월수 추가
sql_query($sql);
}
}
if((((int)$member['mb_point'])||((int)$member['mb_point']-(int)$_POST['addPoint']))<0){ //현재포인트가 없으면
exit; //나가기
}
}
?>
script>
function nopoint() {
alert("경고!!")
}
function M3000() {
if (confirm('구매하시겠습니까?')) {
$.post("",{
addPoint: "3000"
},function(dats,status){
alert("3000원 감소");
});
}
function M6000() {
if (confirm('구매하시겠습니까?')) {
$.post("",{
addPoint: "6000"
},function(dats,status){
alert("6000원 감소");
});
}
}
function M3() {
if (confirm('day')) {
$.post("",{
month: "3"
},function(dats,status){
alert("3달 증가");
});
window.location.reload();
}
}
function M6() {
if (confirm('day')) {
$.post("",{
month: "6"
},function(dats,status){
alert("6달 증가");
});
window.location.reload();
}
}
답변 2
스크립트가 잘못되었는데요?
우선 먼저 가용 포인트가 있는지 없는지부터 제일 위에 실행되어야 하죠..
그리고 쿼리를 매 조건문에 붙이지말고
조건문을 먼저 위에 붙이고
조건문 모두 통과 또는 case를 두어서 아래에서 일괄적으로 업데이트 하는게 좋습니다.
※ https://easy-developmentbear.tistory.com/13
('||' : or, '&&' : and)
<?php
if ($_POST['addPoint'] || $_POST['month']) {
$addpoint = "-" . $_POST['addPoint'];
$month = $_POST['month'];
if ((int) $member['mb_point']) > 0) { // 현재 포인트가 있으면
if ($member['mb_3'] >= $timenow) { // 기간이 남아있으면
insert_point($member['mb_id'] , $addpoint, '기간남음', G5_TIME_YMDHIS, $day);
$sql = "update {$g5['member_table']} set mb_3 = date_add(mb_3, interval '$month' month) where mb_id='{$member['mb_id']}' "; //기존기간에 개월수 추가
sql_query($sql);
}
if ($member['mb_3'] < $timenow) { // 기간이 남아있지 않으면
insert_point($member['mb_id'] , $addpoint, '현재일', G5_TIME_YMDHIS, $day);
$sql = "update {$g5['member_table']} set mb_3 = curdate() where mb_id='{$member['mb_id']}' "; //현재일로 부터 개월수 추가
sql_query($sql);
}
} else {
echo '포인트가 없습니다.';
exit;
}
}
?>
<script>
function M6000() {
if (confirm('구매하시겠습니까?')) {
$.post("",{
addPoint: "6000"
},function(dats,status){
if (dats) {
alert(dats);
} else {
alert("6000원 감소");
}
});
}
}
</script>