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

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

QA

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

답변 1

본문

안녕하세요! 특정 상품 구매시 회원등급을 올리려고 하는데요.. 일단은 여러차례 구글링을 해서 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() 함수 안에서는 이게 최선인 듯합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,102
© SIRSOFT
현재 페이지 제일 처음으로