테스트 사이트 - 개발 중인 베타 버전입니다

날짜지난 게시물 처리 채택완료

동물원 11개월 전 조회 1,215

관리자가 wr_10 = '마감' 이라고 변경하면

리스트페이지에서 해당 게시물의 목록대신 "마감된 이벤트 입니다." 라고 표시되게 적용중입니다.

이벤트 건수가 많아지면서 날짜를 일일히 확인하기도 어렵고,

종종 실수도 있고 해서요.

 

wr_2 에 달력입력 형태로 마감일을 받고 있는데요.

wr_2 의 날짜와 현재 날짜를 비교해서, 마감일이 지나면

wr_10 = '마감' 으로 변하면서, 목록에는 "마감된 이벤트"로 보이게 하고 싶습니다.

 

이렇게 구현하려면 어떻게 수정해야 할까요?

 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
11개월 전

1. extend/default.config.php에 넣으세요

if($config['cf_1'] < G5_TIME_YMD){

 $today = G5_TIME_YMD;

 sql_query("update {$g5['config_table']} set cf_1='$today' "); //하루에 한번만 처리되게 함

 $ev_table= $g5['write_prefix'].'해당게시판';

 sql_query("update $ev_table set wr_10='마감' where wr_10='' and wr_2<'$today' ");

}

 

2. list스킨 for문 디음에 추가

   if($list[$i]['wr_10'] =='마감'){

     $list[$i]['subject'] ='마감된 이벤트'; 

     $list[$i]['href'] ="javascript:alert('마감된 이벤트')";

   }

 

3.view스킨에도 마감 내용을 넣으려면

   if($view['wr_10'] =='마감') alert('마감');

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

동물원
11개월 전
네~ 감사합니다. 하루에 한번 적용되는 코드로 처리하면 깔끔하게 처리할 수 있겠네요.
도움주셔서 진심 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

11개월 전
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

동물원
11개월 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

11개월 전

몇가지 방법이 있을텐데요.. 아래의 코드도 참고를 해보세요.

 

list.skin.php

 

 

<?php
// 게시물 목록을 출력하는 부분에서
for ($i=0; $i<count($list); $i++) {
    // 마감일 체크
    $deadline = strtotime($list[$i]['wr_2']); // wr_2의 날짜를 타임스탬프로 변환
    $today = strtotime(date('Y-m-d')); // 오늘 날짜
    
    // 마감일이 지났다면 wr_10을 '마감'으로 업데이트
    if ($deadline < $today && $list[$i]['wr_10'] != '마감') {
        sql_query(" UPDATE {$write_table} SET wr_10 = '마감' WHERE wr_id = '{$list[$i]['wr_id']}' ");
        $list[$i]['wr_10'] = '마감';
    }
    
    // 마감된 경우 표시
    if ($list[$i]['wr_10'] == '마감') {
        echo '<tr><td colspan="6">마감된 이벤트입니다.</td></tr>';
        continue;
    }
    
    
}
?>

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

glitter0gim
11개월 전

 write_update.php 수정: 마감일 처리 추가

</p>

<p><?php

// 현재 날짜 가져오기

$current_date = date('Y-m-d');</p>

<p>// wr_2(마감일) 확인 후 wr_10 업데이트

if (isset($write['wr_2']) && $write['wr_2'] < $current_date) {

    $sql = "UPDATE {$write_table} SET wr_10 = '마감' WHERE wr_id = '{$write['wr_id']}'";

    sql_query($sql);

}

?></p>

<p>

list.skin.php 수정: "마감된 이벤트 입니다." 메시지 표시

</p>

<p><?php

if ($write['wr_10'] === '마감') {

    echo "<div class='event-status'>마감된 이벤트 입니다.</div>";

}

?></p>

<p>

- 프로젝트/특정폴더/update_expired_events.php 파일 생성 > 크론

</p>

<p><?php

include_once('./common.php'); // 공통 설정 불러오기</p>

<p>$current_date = date('Y-m-d');</p>

<p>// 마감일이 지난 이벤트 업데이트

$sql = "UPDATE {$g5['write_table']}

        SET wr_10 = '마감'

        WHERE wr_2 < '{$current_date}' AND wr_10 != '마감'";

$result = sql_query($sql);</p>

<p>echo "Updated " . sql_num_rows($result) . " expired events.";

?></p>

<p>

- cron 설정으로 ~

</p>

<p>0 0 * * * /usr/bin/php /<span style="font-size:10pt;">프로젝트/특정폴더</span>/update_expired_events.php</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

동물원
11개월 전
답변 감사 드립니다. 이 소스도 한번 적용해 보겠습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인