특정 게시판에 글을 쓰지 않으면 등급이 내려가는 sql문이 잘 안되네요..ㅠㅠ 정보
특정 게시판에 글을 쓰지 않으면 등급이 내려가는 sql문이 잘 안되네요..ㅠㅠ본문
어떤 분이 답변을 달아 주셨는데..
안되더라구요.. list.skin.php에다가 담았는데두요;;
흠.. 아무튼.. 질문 사항은 이렇습니다..
특정 게시판의 스킨의 list.skin.php에다가..
일정 기간동안의(예를들어 60일이라면..) 글을 한번도 안썼으면..
등급을 1등급 낮추는 프로그램인데요...
아래 있는 소스가 안되더라구요;;;
(일부러 1일 맞춰서해봤는데 안되네요ㅠ)
수정해주실 분 찾습니다~~
//기간설정
$limit_date = "60";
//다운시킬 레벨 설정
$after_level = "1";
//해당게시판에 현재 접속한 멤버 아이디 값으로 게시글 등록일을 꺼내옵니다. limit이 1이니 마지막 한개죠.. desc = 내림차순
$sql = " select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc limit 0, 1 ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)){
//$last_write_date라는 변수에 꺼내온 날짜를 담아둡니다.
$last_write_date = $row[wr_datetime];
}
//$last_write_day변수에 날짜데이터를 변환해서 넣어둡니다.
$last_write_day = date("Y-m-d",strtotime($last_write_date));
//$last_write_day변수에 들어있는 날짜데이터를 - 를 기준으로 쪼개서 배열변수로 변환합니다.
$last_write_day = explode("-",$last_write_day);
//마지막 글 쓴 일로부터 $limit_days만큼 지난 날짜를 얻어 $limit_day 함수에 넣어둡니다.
$limit_day = date("Y-m-d",mktime(0,0,0,$last_write_day[1],$last_write_day[2]+$limit_date,$last_write_day[0]));
//$today 변수에 오늘 날짜를 변환해서 넣어둡니다.
$today = date("Y-m-d",time());
//오늘 날짜가 limit_day보다 클 때
if($limit_day < $today){
//멤버테이블에서 해당멤버의 레벨을 $after_level로 수정합니다.
//현재 레벨에서 몇단계 다운시킬경우 현재 레벨을 먼저 가져와서 계산공식을 거쳐서 다시 업데이트 해야함..
$update_sql = " update g4_member set mb_level = '$after_level' where mb_id = '$member[mb_id]' ";
sql_query($update_sql);
//현재 레벨을 가져옵니다.
$sql1 = " select mb_level from g4_member where mb_id = '$member[mb_id]' ";
$result1 = sql_query($sql1);
while($row1 = sql_fetch_array($result1)){
//$update_level변수에 변경된 레벨을 넣습니다.
$update_level = $row1[mb_level];
}
//경고창..
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$update_level}로 강등되셨습니다.");
}
안되더라구요.. list.skin.php에다가 담았는데두요;;
흠.. 아무튼.. 질문 사항은 이렇습니다..
특정 게시판의 스킨의 list.skin.php에다가..
일정 기간동안의(예를들어 60일이라면..) 글을 한번도 안썼으면..
등급을 1등급 낮추는 프로그램인데요...
아래 있는 소스가 안되더라구요;;;
(일부러 1일 맞춰서해봤는데 안되네요ㅠ)
수정해주실 분 찾습니다~~
//기간설정
$limit_date = "60";
//다운시킬 레벨 설정
$after_level = "1";
//해당게시판에 현재 접속한 멤버 아이디 값으로 게시글 등록일을 꺼내옵니다. limit이 1이니 마지막 한개죠.. desc = 내림차순
$sql = " select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc limit 0, 1 ";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)){
//$last_write_date라는 변수에 꺼내온 날짜를 담아둡니다.
$last_write_date = $row[wr_datetime];
}
//$last_write_day변수에 날짜데이터를 변환해서 넣어둡니다.
$last_write_day = date("Y-m-d",strtotime($last_write_date));
//$last_write_day변수에 들어있는 날짜데이터를 - 를 기준으로 쪼개서 배열변수로 변환합니다.
$last_write_day = explode("-",$last_write_day);
//마지막 글 쓴 일로부터 $limit_days만큼 지난 날짜를 얻어 $limit_day 함수에 넣어둡니다.
$limit_day = date("Y-m-d",mktime(0,0,0,$last_write_day[1],$last_write_day[2]+$limit_date,$last_write_day[0]));
//$today 변수에 오늘 날짜를 변환해서 넣어둡니다.
$today = date("Y-m-d",time());
//오늘 날짜가 limit_day보다 클 때
if($limit_day < $today){
//멤버테이블에서 해당멤버의 레벨을 $after_level로 수정합니다.
//현재 레벨에서 몇단계 다운시킬경우 현재 레벨을 먼저 가져와서 계산공식을 거쳐서 다시 업데이트 해야함..
$update_sql = " update g4_member set mb_level = '$after_level' where mb_id = '$member[mb_id]' ";
sql_query($update_sql);
//현재 레벨을 가져옵니다.
$sql1 = " select mb_level from g4_member where mb_id = '$member[mb_id]' ";
$result1 = sql_query($sql1);
while($row1 = sql_fetch_array($result1)){
//$update_level변수에 변경된 레벨을 넣습니다.
$update_level = $row1[mb_level];
}
//경고창..
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$update_level}로 강등되셨습니다.");
}
댓글 전체
if ($member[mb_level]>1 && $member[mb_level]<10) { // 레벨1 이면 더 이상 레벨이 다운될수 없으므로 레벨1 이상만 적용 및 레벨10 이하만 적용
$limit_date = "60"; //기간설정 60일
$after_level = "1"; // 다운시킬 레벨
$row = sql_fetch(" select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc ");
$d_y=substr($row[wr_datetime], 0, 4);
$d_m=substr($row[wr_datetime], 5, 2);
$d_d=substr($row[wr_datetime], 8, 2);
$limit_day = mktime(0,0,0,$d_m,$d_d,$d_y);
$last_day=$limit_day+($limit_date*86400);
if ($last_day < $g4[server_time]) {
$to_level=$member[mb_level]-$after_level;
sql_query(" update g4_member set mb_level = '$to_level' where mb_id = '$member[mb_id]' ");
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$to_level}로 강등되셨습니다.");
}
}
------------------------
위 소스로 적용하면 게시판에 접근할때마다 레벨이 다운됩니다. 회원 여분필드를 다 사용하지 않으신다면 아래와 같이 사용하는 것도 좋을듯합니다.
아래는 레벨이 강등된 후 $to_date에 설정한 일이 지나기전엔 다시 강등되지 않습니다.
------------------------
if ($member[mb_level]>1 && $member[mb_level]<10) { // 레벨1 이면 더 이상 레벨이 다운될수 없으므로 레벨1 이상만 적용 및 레벨10 이하만 적용
$to_date="2"; // 2일 뒤에 다시 레벨 강등하기
$to_day=$g4[server_time]-($to_date*86400);
if (!$member[mb_9] || $member[mb_9]>$to_day) { // 레벨강등이 한번도 없었거나, 이미 레벨이 강등된 후 $to_date 일수가 지났다면 강등 적용
$limit_date = "60"; //기간설정 60일
$after_level = "1"; // 다운시킬 레벨
$row = sql_fetch(" select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc ");
$d_y=substr($row[wr_datetime], 0, 4);
$d_m=substr($row[wr_datetime], 5, 2);
$d_d=substr($row[wr_datetime], 8, 2);
$limit_day = mktime(0,0,0,$d_m,$d_d,$d_y);
$last_day=$limit_day+($limit_date*86400);
if ($last_day < $g4[server_time]) {
$to_level=$member[mb_level]-$after_level;
sql_query(" update g4_member set mb_level = '$to_level', mb_9='$g4[server_time]' where mb_id = '$member[mb_id]' ");
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$to_level}로 강등되셨습니다.");
}
}
}
------------------------
여분필드중 mb_9 를 사용했으므로 mb_9 여분필드가 사용중이시라면 mb_1 ~ mb_10중 사용하지 않은 여분필드로 교체하세요.
$limit_date = "60"; //기간설정 60일
$after_level = "1"; // 다운시킬 레벨
$row = sql_fetch(" select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc ");
$d_y=substr($row[wr_datetime], 0, 4);
$d_m=substr($row[wr_datetime], 5, 2);
$d_d=substr($row[wr_datetime], 8, 2);
$limit_day = mktime(0,0,0,$d_m,$d_d,$d_y);
$last_day=$limit_day+($limit_date*86400);
if ($last_day < $g4[server_time]) {
$to_level=$member[mb_level]-$after_level;
sql_query(" update g4_member set mb_level = '$to_level' where mb_id = '$member[mb_id]' ");
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$to_level}로 강등되셨습니다.");
}
}
------------------------
위 소스로 적용하면 게시판에 접근할때마다 레벨이 다운됩니다. 회원 여분필드를 다 사용하지 않으신다면 아래와 같이 사용하는 것도 좋을듯합니다.
아래는 레벨이 강등된 후 $to_date에 설정한 일이 지나기전엔 다시 강등되지 않습니다.
------------------------
if ($member[mb_level]>1 && $member[mb_level]<10) { // 레벨1 이면 더 이상 레벨이 다운될수 없으므로 레벨1 이상만 적용 및 레벨10 이하만 적용
$to_date="2"; // 2일 뒤에 다시 레벨 강등하기
$to_day=$g4[server_time]-($to_date*86400);
if (!$member[mb_9] || $member[mb_9]>$to_day) { // 레벨강등이 한번도 없었거나, 이미 레벨이 강등된 후 $to_date 일수가 지났다면 강등 적용
$limit_date = "60"; //기간설정 60일
$after_level = "1"; // 다운시킬 레벨
$row = sql_fetch(" select wr_datetime from $write_table where mb_id = '$member[mb_id]' order by wr_datetime desc ");
$d_y=substr($row[wr_datetime], 0, 4);
$d_m=substr($row[wr_datetime], 5, 2);
$d_d=substr($row[wr_datetime], 8, 2);
$limit_day = mktime(0,0,0,$d_m,$d_d,$d_y);
$last_day=$limit_day+($limit_date*86400);
if ($last_day < $g4[server_time]) {
$to_level=$member[mb_level]-$after_level;
sql_query(" update g4_member set mb_level = '$to_level', mb_9='$g4[server_time]' where mb_id = '$member[mb_id]' ");
alert("{$limit_date}일동안 게시글을 남기지 않아 레벨 {$to_level}로 강등되셨습니다.");
}
}
}
------------------------
여분필드중 mb_9 를 사용했으므로 mb_9 여분필드가 사용중이시라면 mb_1 ~ mb_10중 사용하지 않은 여분필드로 교체하세요.