스크랩에서 일정이 지나면 자동 삭제

스크랩에서 일정이 지나면 자동 삭제

QA

스크랩에서 일정이 지나면 자동 삭제

본문

안녕하세요. 

 

여분필드 wr2를 시간으로 사용하고 있습니다.

스크랩한 글에서 wr2의 시간이 지나면 스크랩에서 자동으로 삭제되게 할 수 있을까요?

 

최신게시물스킨에서 일정날짜가 지나면 삭제되는 원리랑 비슷할거 같은데 소스를 잘 모르겠네요..ㅠㅠ

 

bbs/scrap.php 파일입니다.

<?php
include_once('./_common.php');

if (!$is_member)
    alert_close('회원만 조회하실 수 있습니다.');

$sql_common = " from {$g5['scrap_table']} where mb_id = '{$member['mb_id']}' ";

$sql_order = " order by wr_id asc ";

$sql = " select count(*) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];

$rows = $config['cf_page_rows'];
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함

$list = array();

$sql = " select *
            $sql_common
            $sql_order
            limit $from_record, $rows ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {

    $list[$i] = $row;

    // 순차적인 번호 (순번)
    $num = $total_count - ($page - 1) * $rows - $i;

    // 게시판 제목
    $sql2 = " select bo_subject from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";
    $row2 = sql_fetch($sql2);
    if (!$row2['bo_subject']) $row2['bo_subject'] = '[게시판 없음]';

    // 게시물 제목
    $tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
    $sql3 = " select wr_subject, wr_2 from $tmp_write_table where wr_id = '{$row['wr_id']}' ";
    $row3 = sql_fetch($sql3, FALSE);
    $subject = ($row3['wr_subject']) ? get_text(cut_str($row3['wr_subject'], 100)) : '글이 없습니다.';

    $list[$i]['num'] = $num;
    $list[$i]['opener_href'] = './board.php?bo_table='.$row['bo_table'];
    $list[$i]['opener_href_wr_id'] = './board.php?bo_table='.$row['bo_table'].'&wr_id='.$row['wr_id'];
    $list[$i]['bo_subject'] = $row2['bo_subject'];
    $list[$i]['subject'] = $subject;

$list[$i]['wr_2'] = $row3['wr_2'];
    $list[$i]['del_href'] = './scrap_delete.php?ms_id='.$row['ms_id'].'&page='.$page;
}

$write_page_rows = (G5_IS_MOBILE) ? $config['cf_mobile_pages'] : $config['cf_write_pages'];
$list_page = $_SERVER['PHP_SELF'].'?'.$qstr.'&page=';

// Page ID
$pid = ($pid) ? $pid : '';
$at = apms_page_thema($pid);
include_once(G5_LIB_PATH.'/apms.thema.lib.php');

// 스킨 체크
list($member_skin_path, $member_skin_url) = apms_skin_thema('member', $member_skin_path, $member_skin_url); 

// 설정값 불러오기
$is_scrap_sub = true;
@include_once($member_skin_path.'/config.skin.php');

$g5['title'] = get_text($member['mb_nick']).'님의 관심목록';

if($is_scrap_sub) {
    include_once(G5_PATH.'/head.php');
    if(!USE_G5_THEME) @include_once(THEMA_PATH.'/head.sub.php');
} else {
    include_once('./_head.php');
}

$skin_path = $member_skin_path;
$skin_url = $member_skin_url;

// 스킨설정
$wset = (G5_IS_MOBILE) ? apms_skin_set('member_mobile') : apms_skin_set('member');

$setup_href = '';
if(is_file($skin_path.'/setup.skin.php') && ($is_demo || $is_designer)) {
    $setup_href = './skin.setup.php?skin=member&ts='.urlencode(THEMA);
}

include_once($skin_path.'/scrap.skin.php');

if($is_scrap_sub) {
    if(!USE_G5_THEME) @include_once(THEMA_PATH.'/tail.sub.php');
    include_once(G5_PATH.'/tail.php');
} else {
    include_once('./_tail.php');
}
?>

이 질문에 댓글 쓰기 :

답변 2


sql_query(" delete from `{$g5['scrap_table']}` where wr_2 < date_add(now(), interval -30 day) ");

위의 내용을 원하는 위치에 포함 시키면 언제나 오늘기준 (now()) 30일 이전의 스크랩은 모두 삭제가 될 것입니다.
index.php 파일에 포함시키거나 
extend 폴더의 파일에 넣거나 헤드 파일에 넣을 수도 있을 것이니다.


    // 게시물 제목
    $list[$i]['num'] = $num;

    $tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
    $sql3 = " select wr_subject, wr_2 from $tmp_write_table where wr_id = '{$row['wr_id']}' ";
    $row3 = sql_fetch($sql3, FALSE);
    if ($row3['wr_2'] > G5_TIME_YMDHIS) {
        sql_query("delete from {$g5['scrap_table']} where mb_id = '{$member['mb_id']}' and bo_table= '{$row['bo_table']}' and wr_id = '{$row['wr_id']}'");
        sql_query("update `{$g5['member_table']}` set mb_scrap_cnt = '".get_scrap_totals($member['mb_id'])."' where mb_id = '{$member['mb_id']}'");
     
        $subject = "삭제된 스크랩"; 
        $list[$i]['opener_href'] = './board.php?bo_table='.$row['bo_table'];
        $list[$i]['opener_href_wr_id'] = '';
    } else {
        $subject = ($row3['wr_subject']) ? get_text(cut_str($row3['wr_subject'], 100)) : '글이 없습니다.';
        $list[$i]['opener_href'] = './board.php?bo_table='.$row['bo_table'];
        $list[$i]['opener_href_wr_id'] = './board.php?bo_table='.$row['bo_table'].'&wr_id='.$row['wr_id'];
    }

스크랩창 열었을때 한번은 보이니 대신에 링크를 죽이고 삭제 되었다는 subejct를 띄우고

그 다음부터는 삭제되고 스크랩 리스트에서 안보일겁니다.

아예 안보이게 하면 갯수가 페이징해서 불러오다보니 한페이지가 텅 비어보일수도 있을것 같아서

 

소스가 그누원본이 아니라 member 테이블에 mb_scrap_cnt를 어떻게 하는지 몰라서

그누 원본소스 기준 scrap_delete.php 기준으로 넣기는 했습니다. g5_scrap primary가 ms_id 일텐데

올려주신 소스만으로는 그게 있는지 판단하기 어려워서 delete where 조건을 bo_table 이랑 wr_id로 일단적었습니다. 참고해서 수정해서 적용하세요

답변 감사합니다!

이파일을 skin/member/scrap.skin.php 파일에다가 넣는건가요?

스크랩 리스트에 제목을 사용하지 않아서 그런지.. 반응이 없네요.

제목대신 wr_2값을 리스트에 출력하게 했는데 이걸 제목대신 넣어서도 사용해봤는데 반응이 없네요 ㅠ

본문에서 조금 오해가 있었을수도 있는데 wr_2값이 현재 시간을 지나면 삭제된다는 내용이었어요.

아래가 스킨파일입니다..

<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

$thum_width = 209; // 썸네일 가로크기
$thum_height = 292; // 썸네일 세로크기
$img_cols = 4; //썸네일 가로 개수

// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$skin_url.'/style.css" media="screen">', 0);

?>
<!--PC 용-->  <?php if(!G5_IS_MOBILE) { ?>
<script>
window.onload = function() {
    <?php for ($i = 0; $i < count($list); $i++) : ?>
        // 종료 시간 설정 (UNIX 타임스탬프 형식으로)
        var end_time_<?php echo $i; ?> = <?php echo strtotime($list[$i]['wr_2']); ?>;
       
        // 카운트다운 업데이트 함수
        function updateCountdown_<?php echo $i; ?>() {
            var current_time = Math.floor(Date.now() / 1000); // 현재 UNIX 타임스탬프
            var remaining_time = end_time_<?php echo $i; ?> - current_time; // 종료 시간까지 남은 시간 (초)
           
            var days = Math.floor(remaining_time / (60 * 60 * 24));
            var hours = Math.floor((remaining_time % (60 * 60 * 24)) / (60 * 60));
            var minutes = Math.floor((remaining_time % (60 * 60)) / 60);
            var seconds = remaining_time % 60;
           
            // HTML 업데이트
if(seconds <= 0 && minutes <= 0 && hours <= 0 && days <= 0){
            document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<i class='fa fa-hourglass' aria-hidden='true'> </i> 종료된 경매";
}else if(minutes == 0 && hours == 0 && days == 0){
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<font color='#FF0000'><i class='fa fa-hourglass-3' aria-hidden='true'> </i> " + seconds + "초 남음";
}else if(hours == 0 && days == 0){
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<font color='#FF6600'><i class='fa fa-hourglass-2' aria-hidden='true'> </i> " + minutes + "분 " + seconds + "초 남음";
}else if(days <= 0){
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<i class='fa fa-hourglass-2' aria-hidden='true'> </i> " + hours + "시간" + minutes + "분 남음 ";
}else {
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<i class='fa fa-hourglass-1' aria-hidden='true'> </i> " + days + "일 " + hours + "시간 남음";

}

        }
        // 매 초마다 카운트다운 업데이트
        setInterval(updateCountdown_<?php echo $i; ?>, 1000);
       
        // 페이지 로드 시에도 한 번 업데이트
        updateCountdown_<?php echo $i; ?>();
    <?php endfor; ?>
};
</script>
<!--PC 용-->  <?php } ?>


<!--모바일 용-->  <?php if(G5_IS_MOBILE) { ?>
<script>
window.onload = function() {
    <?php for ($i = 0; $i < count($list); $i++) : ?>
        // 종료 시간 설정 (UNIX 타임스탬프 형식으로)
        var end_time_<?php echo $i; ?> = <?php echo strtotime($list[$i]['wr_2']); ?>;
       
        // 카운트다운 업데이트 함수
        function updateCountdown_<?php echo $i; ?>() {
            var current_time = Math.floor(Date.now() / 1000); // 현재 UNIX 타임스탬프
            var remaining_time = end_time_<?php echo $i; ?> - current_time; // 종료 시간까지 남은 시간 (초)
           
            var days = Math.floor(remaining_time / (60 * 60 * 24));
            var hours = Math.floor((remaining_time % (60 * 60 * 24)) / (60 * 60));
            var minutes = Math.floor((remaining_time % (60 * 60)) / 60);
            var seconds = remaining_time % 60;
           
            // HTML 업데이트
if(seconds <= 0 && minutes <= 0 && hours <= 0 && days <= 0){
            document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<i class='fa fa-hourglass' aria-hidden='true'> </i> 종료된 경매";
}else if(minutes == 0 && hours == 0 && days == 0){
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<font color='#FF0000'><i class='fa fa-hourglass-3' aria-hidden='true'> </i> " + seconds + "초";
}else if(hours == 0 && days == 0){
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<font color='#FF6600'><i class='fa fa-hourglass-2' aria-hidden='true'> </i> " + minutes + "분 " + seconds + "초";
}else if(days <= 0){
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<i class='fa fa-hourglass-2' aria-hidden='true'> </i> " + hours + "시간" + minutes + "분";
}else {
document.getElementById('countdown_<?php echo $i; ?>').innerHTML = "<i class='fa fa-hourglass-1' aria-hidden='true'> </i> " + days + "일 " + hours + "시간";

}
        }
        // 매 초마다 카운트다운 업데이트
        setInterval(updateCountdown_<?php echo $i; ?>, 1000);
       
        // 페이지 로드 시에도 한 번 업데이트
        updateCountdown_<?php echo $i; ?>();
    <?php endfor; ?>
};
</script>
<!--모바일 용-->  <?php } ?>

아뇨...올려주신 소스부분중에 수정할 부분을 알려드린겁니다. 어디를 수정할지 전혀 이해를 못하신 상황 인것 같은데..스킨에다 적용할 생각을 하는분에게 이걸 이해 시킬만큼의 실력은 안되는것 같습니다. 죄송합니다

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

회원로그인

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