멤버십 회원 등급 변경 오류 문의,

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
멤버십 회원 등급 변경 오류 문의,

QA

멤버십 회원 등급 변경 오류 문의,

본문

그누, 영카드로 회원 멤버십으로 운영할 수 있게 개발한 부분이 있습니다.

 

개발 부분 : 상품마다 멤버십이 있음. 회원은 레벨5, 만료회원은 레벨2로 변경. 다른 상품에 멤버십이 아직 유효하면 변경 X

 

이번에 서버 이전을 하면서(가상서버 호스팅 > 웹호스팅) 변경된 부분이 있는데요.
이후부터 멤버십 만료 회원이 레벨5 > 레벨2로 변경이 안 되는데.

 

서버 이전 해주신 개발자님이 크론탭을 사용해야 한다고 해서 코드를 이렇게 변경하셨는데, 문제점을 알 수 있을까요??

 

코드 변경전 

 

<?php
$conn = mysql_connect("localhost", "id", "password");
mysql_select_db("id", $conn);
 
$now = time();
 
$todate = date("Y-m-d", $now);
 
// 서비스 만료일 판단
$msQuery = "SELECT * FROM member_service WHERE stats NOT IN ('cancel', 'pause') AND sp_date < '".$todate."' AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id) ";
$msResult = mysql_query($msQuery, $conn);
while($msRow = mysql_fetch_array($msResult)) {
 
    // 이용중인 다른 서비스가 있는지 확인
    $otQuery = "SELECT
                    COUNT(ms_no) AS cnt
                FROM
                    member_service
                WHERE
                    mb_id = '".$msRow['mb_id']."'
                    AND stats NOT IN ('cancel', 'pause')
                    AND st_date <= '".$todate."'
                    AND sp_date >= '".$todate."'
                    AND ms_no != '".$msRow['ms_no']."'
                    AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id)";
    $otResult = mysql_query($otQuery, $conn);
    $otRow = mysql_fetch_array($otResult);
 
    if($otRow['cnt'] > 0) { // 이용중인 다른 서비스가 있으므로
 
        // pass
 
    } else {
 
        // 회원레벨이 4, 5에 해당되는지
        $mbQuery = "SELECT mb_level FROM g5_member WHERE mb_id = '".$msRow['mb_id']."' LIMIT 1";
        $mbResult = mysql_query($mbQuery, $conn);
        $mbRow = mysql_fetch_array($mbResult);
 
        if($mbRow['mb_level'] == "4" || $mbRow['mb_level'] == "5") {
 
            $upQuery = "UPDATE g5_member SET mb_level = '2' WHERE mb_id = '".$msRow['mb_id']."' ";
            mysql_query($upQuery, $conn);
 
//          echo $msRow['mb_id']." : UPDATE mb_level = '2'\r";
        }
    }
}
?>

 

 

 

코드 변경후 (회원 등급 변경이 안됨) 

 


<?php
$link = mysqli_connect("localhost", "id", "password");
mysqli_select_db($link, "id");
 
$now = time();
 
//$todate = date("Y-m-d", $now);
$todate = $_GET['todate'];
 
if($todate == "") {
    echo "테스트 일자가 없습니다.";
    exit;
}
 
echo "처리일자 : ".$todate."<br />";
 
// 서비스 만료일 판단
$msQuery = "SELECT * FROM member_service WHERE stats NOT IN ('cancel', 'pause') AND sp_date < '".$todate."' AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id) ";
$msResult = mysqli_query($link,$msQuery);
while($msRow = mysqli_fetch_array($msResult)) {
 
    // 이용중인 다른 서비스가 있는지 확인
    $otQuery = "SELECT
                    COUNT(ms_no) AS cnt
                FROM
                    member_service
                WHERE
                    mb_id = '".$msRow['mb_id']."'
                    AND stats NOT IN ('cancel', 'pause')
                    AND st_date <= '".$todate."'
                    AND sp_date >= '".$todate."'
                    AND ms_no != '".$msRow['ms_no']."'
                    AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id)";
    $otResult = mysqli_query($link,$otQuery);
    $otRow = mysqli_fetch_array($otResult);
 
    if($otRow['cnt'] > 0) { // 이용중인 다른 서비스가 있으므로
 
        // pass
//      echo $msRow['mb_id']." : 다른서비스 있음 - ".$msRow['od_id']."<br />";
 
    } else {
 
        // 회원레벨이 4, 5에 해당되는지
        $mbQuery = "SELECT mb_level FROM g5_member WHERE mb_id = '".$msRow['mb_id']."' LIMIT 1";
        $mbResult = mysqli_query($link, $mbQuery);
        $mbRow = mysqli_fetch_array($mbResult);
 
        if($mbRow['mb_level'] == "4" || $mbRow['mb_level'] == "5") {
 
            $upQuery = "UPDATE g5_member SET mb_level = '2' WHERE mb_id = '".$msRow['mb_id']."' ";
            mysqli_query($link, $upQuery);
 
            echo $msRow['mb_id']." : UPDATE mb_level = '2'<br />";
 
        }
    }
}
?>

이 질문에 댓글 쓰기 :

답변 2

해당 파일을

URL 연결이 가능한 폴더로 옮겨서

브라우저에서 오류가 나는지 확인해 보세요.

댓글 감사합니다. 제가 개발쪽은 잘 몰라서요, 이거 말씀하시는 건가요?? 저 코드가 있는 php를 www/ 위치에 넣어서 인터넷으로 페이지 확인하고 f12 개발자 모드로 확인했는데 오류 코드는 없습니다.

$conn = mysql_connect("localhost", "id", "password");

$link = mysqli_connect("localhost", "id", "password");

변경된 부분은 이부분인거같은데 디비 연결 재확인 바랍니다

네, 디비는 연결 잘 되었고, mysql > mysqli 이부분은 php 버전 때문에 변경한거 같은데. 


//$todate = date("Y-m-d", $now);
$todate = $_GET['todate'];
if($todate == "") {
    echo "테스트 일자가 없습니다.";
    exit;
}
echo "처리일자 : ".$todate."<br />";


이부분 변경 이유를 잘 모르겠네요 ㅠ

1.
$link = mysqli_connect("localhost", "id", "password");
부분이 실제 DB연결에 필요한 ID, PASSWORD 인지?

2. URL 에 파라미터로 todate 값을 넘겼는지?
넘기지 않아서 생기는 문제라면

2-1 todate 값을 넘기거나
2-2 넘기는 법을 모르신다면,

----------------변경 전----------------

//$todate = date("Y-m-d", $now);
$todate = $_GET['todate'];
 
if($todate == "") {
    echo "테스트 일자가 없습니다.";
    exit;
}
 
echo "처리일자 : ".$todate."<br />";


----------------------------------------

----------------변경 후----------------
$todate = date("Y-m-d", $now);
----------------------------------------

로 수정해주시면 될 것 같습니다.

채호준님 댓글 감사합니다.

1. 실제 DB 필요한 ID, PASSWORD 맞습니다.
2. 파라미터로 넘어가는지 확인 방법은 모르지만, 기간이 지나면 만료로 표기되니 넘어가는듯 하고요,
2-2. $todate = date("Y-m-d", $now); <<--- 로 변경해서 테스트 했는데 기간이 지나면 만료가 변경 되는데. 등급(레벨)이 5에서2등급으로 자동 변경이 안되네요 ㅎ

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

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