특정 상품 구매시 회원등급 올리기

특정 상품 구매시 회원등급 올리기

QA

특정 상품 구매시 회원등급 올리기

본문

안녕하세요! 특정 상품 구매시 회원등급을 올리려고 하는데요.. 일단은 여러차례 구글링을 해서 sir에서 포인트를 이용해서 올리는 방법을 알아내었습니다

 

https://sir.kr/yc5_tip/852

 

하지만 이 방법은 모든 상품을 구매하면 포인트를 지급하면서 동시에 쿼리를 줘서 회원 등급을 올리는 방법인거 같습니다 그래서 제가 생각했던게 예를들면 a 상품의 it_id 가 123 라고 한다면 it_id가 123 인 상품을 구매했으면 회원등급을 올려주는 형식으로 만들려고 했는데.. 왜 안되는지 잘 모르겠습니다 선배님들의 조언이 필요합니다 감사합니다..

 

 
function save_order_point($ct_status="完了")
{
    global $g5, $default;
    $beforedays = date("Y-m-d H:i:s", ( time() - (86400 * (int)$default['de_point_days']) ) ); // 86400초는 하루
    $sql = " select * from {$g5['g5_shop_cart_table']} where ct_status = '$ct_status' and ct_point_use = '0' and ct_time <= '$beforedays' ";
    $result = sql_query($sql);
    for ($i=0; $row=sql_fetch_array($result); $i++) {
        // 회원 ID 를 얻는다.
        $od_row = sql_fetch("select od_id, mb_id from {$g5['g5_shop_order_table']} where od_id = '{$row['od_id']}' ");
        if ($od_row['mb_id'] && $row['ct_point'] > 0) { // 회원이면서 포인트가 0보다 크다면
            $po_point = $row['ct_point'] * $row['ct_qty'];
            $po_content = "주문번호 {$od_row['od_id']} ({$row['ct_id']}) 배송완료";
            insert_point($od_row['mb_id'], $po_point, $po_content, "@delivery", $od_row['mb_id'], "{$od_row['od_id']},{$row['ct_id']}");
        }
        
        sql_query("update {$g5['g5_shop_cart_table']} set ct_point_use = '1' where ct_id = '{$row['ct_id']}' ");
 
        //내가 작성한 코드
        //$sql_find = "select it_id,ct_status from {$g5['g5_shop_cart']} where it_name='Membership Step (4)'";
        //$od_find = sql_fetch($sql_find);
        //if($od_find['it_id'] == 1625643785){
        //회원등급을 변경하는 코드
        //sql_query("update {$g5['member_table']} set mb_level = '5' where mb_id = '{$od_row['mb_id']}' ");
        //}
    }
} 

 

이 질문에 댓글 쓰기 :

답변 1

    $sql = " select * from {$g5['g5_shop_cart_table']} where ct_status = '$ct_status' and ct_point_use = '0' and ct_time <= '$beforedays' ";
    $result = sql_query($sql);
    for ($i=0; $row=sql_fetch_array($result); $i++) {
...
        if($row['it_Id']== 1625643785){
        //회원등급을 변경하는 코드
           sql_query("update {$g5['member_table']} set mb_level = '5' where mb_id = '{$row['mb_id']}' ");
        }

 

중복일 수 있으나 이렇게 하면 될 듯합니다.

선생님 너무너무 감사합니다 이렇게 코드를 작성하니 그래도 작동은 하는거 같습니다 정말 감사드립니다 오랫동안 고민했는데 해결했네요 하지만 조금만 더 배워가고 싶습니다 어디가 중복이라는 말씀이실까요? 그리고 중복이 발생하면 향후 문제가 있을까요?

DB 내용에서 중복이 아니라
코드 상에서 중복이랄까 조금은 효율적이지 못하다는 겁니다.
계속 if()으로 비교하고 있으니까요.
하여간에 save_order_point() 함수 안에서는 이게 최선인 듯합니다.

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

회원로그인

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