날짜지난 게시물 처리

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
날짜지난 게시물 처리

QA

날짜지난 게시물 처리

답변 3

본문

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

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

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

종종 실수도 있고 해서요.

 

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

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

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

 

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

 

이 질문에 댓글 쓰기 :

답변 3

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('마감');

 

 

 

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

 

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;
    }
    
    
}
?>

 

 

 

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


<?php
// 현재 날짜 가져오기
$current_date = date('Y-m-d');
// 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);
}
?>

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


<?php
if ($write['wr_10'] === '마감') {
    echo "<div class='event-status'>마감된 이벤트 입니다.</div>";
}
?>

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


<?php
include_once('./common.php'); // 공통 설정 불러오기
$current_date = date('Y-m-d');
// 마감일이 지난 이벤트 업데이트
$sql = "UPDATE {$g5['write_table']}
        SET wr_10 = '마감'
        WHERE wr_2 < '{$current_date}' AND wr_10 != '마감'";
$result = sql_query($sql);
echo "Updated " . sql_num_rows($result) . " expired events.";
?>

- cron 설정으로 ~


0 0 * * * /usr/bin/php /프로젝트/특정폴더/update_expired_events.php
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로