회원 자동 등업 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

회원 자동 등업 정보

회원 자동 등업

본문

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=12255

션션션님이 올려주신 팁에 대한 질문입니다.
회원이 유료회원 신청을 하면 관리자가 코멘트를 달면서 레벨과 기간을 설정해주는 팁입니다.
기간은 mb_1 에 저장이 됩니다.
mb_1 이 비어있거나 이미 지나간 날짜라면
추가 기간을 mb_1에 새로 설정해줘도 상관이 없는데
문제는 아직 유료기간이 남아 있을 경우 남아 있는 기간에 추가기간을 더해줘야 한다는 겁니다.
그런 이유로 위 링크의 팁을 션션션님이 아래와 같이 수정하셨네요. 

http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=117410&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%BC%C7%BC%C7%BC%C7&sop=and

수정소스는 아래와 같고요.
그런데 아래 소스가 안 먹힌다는 점입니다.
테스트해보니 mb_1 추출하는 함수에 이상이 있는 것 같습니다.
어디가 문제일까요.
밤새 뜯어고치고 머리 싸매도 제 실력으론 답이 안 나오네요.ㅠㅠ

$mb_1=@mysql_result(@mysql_query("select mb_1 from g4_member where mb_id='$row[mb_id]'"),0,0);

$wtime=date("Ymd");
$ddate=(strtotime($mb_1)- strtotime($wtime)) / 86400;
if ($ddate <= 0) {
$update_time  = date("Ymd", time()+86400*$mb) ;  //ex-  오늘:20070210  ==>  20070312  update
mysql_query(" update g4_member set mb_1='$update_time' where mb_id='$row[mb_id]' ");
}
else
{
$update_time  =  date("Ymd", time()+86400*($mb+$ddate)) ;  //ex-  오늘:20070210  ==>  20070312  update
mysql_query(" update g4_member set mb_1='$update_time' where mb_id='$row[mb_id]' ");
}

댓글 전체

소스에서 if ($row2[wr_9] !== "") { 라고 나와있는 부분 뒤를 다음으로 변경하고 해보세요. time을 다루는 부분이 잘못되었네요.
===================================================================================

if ($row2[wr_9] !== "") {
// $row2[wr_9] -> 만기기간

if ($member[mb_1]) {
$tstamp = mktime(0, 0, 0, intval(substr($member[mb_1], 4, 2)), intval(substr($member[mb_1], 6, 2)), intval(substr($member[mb_1], 0, 4)));
}
else {// 만일 mb_1이 비어있으면 오늘을 기준으로 설정
$tstamp = time();
}

$plus_time = 86400*$mb; //60초*60분*24시간*$mb일

$update_time  = date("Ymd", ($tstamp + $plus_time)) ;  //ex-  오늘:20070210  ==>  20070312  update
mysql_query(" update g4_member set mb_1='$update_time' where mb_id='$row[mb_id]' ");
}
답변 감사합니다. 그런데요...
레벨을 변경해야 할 대상은 일반회원입니다.
$member[mb_1] 를 사용하니 관리자 테이블에서 mb_1 값을 가져옵니다.
$mb[mb_1] 는 값이 없는 것 같고요.
[mb_1]을 디비에서 새로 불러와야 하는 것 아닌지요.
흠... 그렇네요... 생각해보니까... 내가 올린 스킨도 아닌데... 쩝...

이렇게 해보세요.

if ($row2[wr_9] !== "") {
// $row2[wr_9] -> 만기기간

$row3 = sql_fetch(" select mb_1 from g4_member where mb_id='$row[mb_id]' ");

if ($row3[mb_1] != '') {
$tstamp = mktime(0, 0, 0, intval(substr($member[mb_1], 4, 2)), intval(substr($member[mb_1], 6, 2)), intval(substr($member[mb_1], 0, 4)));
}
else { // 만일 mb_1이 비어있으면 오늘을 기준으로 설정
$tstamp = time();
}

$plus_time = 86400*$mb; //60초*60분*24시간*$mb일

$update_time  = date("Ymd", ($tstamp + $plus_time)) ;  //ex-  오늘:20070210  ==>  20070312  update
mysql_query(" update g4_member set mb_1='$update_time' where mb_id='$row[mb_id]' ");
}
계속 관심 가져주셔서 정말 고맙습니다.
그런데 이것도 잘 안 되네요.
이것 저것 변형도 해보았지만
기존 mb_1에 기간이 플러스되지 않습니다.
substr($member[mb_1], 4, 2) 이부분은 그냥 $member[mb_1]를 사용하는 게 맞는지요.
$mb[mb_1]를 해도 안되고 $row3[mb_1]을 해도 안되네요.ㅠㅠ
헉 죄송해요.

if ($row2[wr_9] !== "") {
// $row2[wr_9] -> 만기기간

$row3 = sql_fetch(" select mb_1 from g4_member where mb_id='$row[mb_id]' ");

if ($row3[mb_1]) {
$tstamp = mktime(0, 0, 0, intval(substr($row3[mb_1], 4, 2)), intval(substr($row3[mb_1], 6, 2)), intval(substr($row3[mb_1], 0, 4)));
}
else { // 만일 mb_1이 비어있으면 오늘을 기준으로 설정
$tstamp = time();
}

$plus_time = 86400*$mb; //60초*60분*24시간*$mb일

$update_time  = date("Ymd", ($tstamp + $plus_time)) ;  //ex-  오늘:20070210  ==>  20070312  update
mysql_query(" update g4_member set mb_1='$update_time' where mb_id='$row[mb_id]' ");
}

근데 $row3[mb_1]로 했는데도 안되나요???

저는 테스트까지 해보고 알려드린 건데... 기간 설정은 만일 mb_1이 제대로 추출이 되면 맞게 될 겁니다. 테스트를 해보세요. 예를 들어 $row3 = .....; 다음에 print_r($row3); exit;등의 코드를 넣어보아 제대로 값이 나오는지를 확인하면 될 것 같네요. 예를 들어 "이미" 엉뚱한 값이 들어 있어 값이 제대로 나오지 않을 가능성도 배제할 수 없을 거 같네요.
와우! 드디어 해결했습니다.
-------
 "이미" 엉뚱한 값이 들어 있어 값이 제대로 나오지 않을 가능성도 배제할 수 없을 거 같네요.
-------
이 말씀에 힌트를 얻어 잘 살펴보니 코멘트를 여러개 달면서 row2[wr_9] 값이 중첩계산됐나 봅니다.
한 원글에 한 코멘트만 하니까 잘 됩니다.
성실히 답변달아주시고 테스트까지 해주셔서 정말 정말 고맙습니다.^^
같은 문제로 고민하실 분들을 위해 제가 약간 수정한 소스를 첨부합니다.
$mbp=$row2[wr_9] 로 추가기간 변수 선언을 했고
유료기간이 이미 지났지만 mb_1에 수치가 남아 있는 경우를 위해
if ($row3[mb_1] > $today) 로 바꿔서
현재시간을 기준으로 기간이 추가되도록 했습니다.

----------

if ($row2[wr_9] !== "") {
$mbp=$row2[wr_9]; // 기간

$row3 = sql_fetch(" select mb_1 from g4_member where mb_id='$row[mb_id]' ");
$today = date('Ymd');

if ($row3[mb_1] > $today) {
$tstamp = mktime(0, 0, 0, intval(substr($row3[mb_1], 4, 2)), intval(substr($row3[mb_1], 6, 2)), intval(substr($row3[mb_1], 0, 4)));
}
else { // 만일 mb_1이 비어있거나 기간 지났으면 오늘을 기준으로 설정
$tstamp = time();
}

$plus_time = 86400*$mbp; //60초*60분*24시간*$mbp일

$update_time  = date("Ymd", ($tstamp + $plus_time)) ;  //ex-  오늘:20070210  ==>  20070312  update
mysql_query(" update g4_member set mb_1='$update_time' where mb_id='$row[mb_id]' ");
}
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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