채택완료

행사종료 후 종료 카테고리로 이동시키기

안녕하세요.

 

이벤트 게시물 같은 것입니다.

시작일: 여분필드 8 사용

종료일: 여분필드 9 사용

그래서 시간이 종료일이 지나면

- 텍스트로 행사종료 라고 나타내게 했습니다.

- 종료 전이면 행사 마감 **일 전 입니다 라고 나타내게 했습니다.

 

하고 싶은 것

- 종료 후 게시물을 "종료" 카테고리로 자동으로 옮기고 싶습니다.

* 스킨 게시판에 비슷한 기능이 있어서 참고 후 제 소스에 적용시켰는데 원하는대로 안되네요.

코드 어디를 수정해야 할까요?

 

감사합니다.

 

Copy
<?php
                        $start_day = $list[$i]['wr_8']." 00:00:00"; // 시작일
                        $end_day = $list[$i]['wr_9']." 23:59:59"; // 종료일
                        $rest_day = strtotime($list[$i]['wr_9']) - time();//남은 기간을 초단위로 출력
                        $rest_day = round($rest_day/86400);//남은 기간을 일단위로 출력되도록 변환
                        
                        $sql = "select wr_id, ca_name, wr_8 wr_9 from {$write_table} where wr_is_comment = 0 order by wr_id desc limit 0, 50 ";
                        $result = sql_query($sql);
                        for ($i=0; $row = sql_fetch_array($result); $i++) {
                        }if ($rest_day < 0) {
                        sql_query(" update {$write_table} set ca_name='종료' where wr_id = {$row['wr_id']} ");
                        }
                        
                        if ($rest_day < 0) {
                            echo '<font color=#FF0000>행사종료</font>';
                            
                            
                            } else{
                        echo '마감&nbsp;'.$rest_day.'일전';
                        }
                        ?>
|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

저런식이면 페이지가 로딩 되야 적용이 될테니, 

정확하게 구현하려면

0시 0분에 돌아가는 크론이 설정되야할거같네요! ㅎㅎ

 

답변에 대한 댓글 2개

안녕하세요.
의견 감사 합니다.
시간을비교해서 작동시키면 되지 않을까요?
크론작업까지 해야 하는 상황인가요?
아 그냥 페이지 로드됬을때 처리한다고 치면,
(위에 텍스트로 행사종료 라고 나타내게 했습니다 <- 이 조건에 맞춘다치면)
저기 update 부분에서 $row 가 아닌 $list[$i] 가 되면 될거같은데,
그러면 로드될때마다 update 될수있으니,
if ($ca_name != '종료') 조건을 추가해주시면 더 좋을거같기도 하네요

안녕하세요.

 

소스를 구글링해서 아마니에 올라온 것을 활용했습니다.

저 같은 경우는

아래와 같이 살짝 변경해서 사용했는데 잘 됩니다.

하루가 지난 후 누군가 방문자가 있으면 그때 디비를 업데이트 해 종료 카테고리로 옮기는 것 같습니다.

* 크론을 사용하지 않는 방법이라고 하네요.

* 저도 이곳 저곳에서 구글링해서 소스 적용만 해봐서 질문을 하셔도 답을 드릴 수준이 안됩니다. 죄송합니다.

 

현재 작업 중인 곳

https://klick.co.kr

 

 

Copy
//하루에 한번 날짜로 카테고리 업데이트 
if(G5_TIME_YMD != $board['bo_1']){ 
 
    // 이미 진행완료 처리된 것과 날짜 정보가 없는 것은 필요 없으니 빼고 가져온다.
    $sql = " select wr_id, ca_name, wr_8, wr_9 from {$write_table} where wr_is_comment = 0 and wr_8 <> '' and wr_9 <>'' and ca_name <> '종료' order by wr_id ";
    $result = sql_query($sql); 
    for ($i=0; $row = sql_fetch_array($result); $i++) { 
 
        // 이렇게 해도 됩니다.
        $start_date = substr($row['wr_8'], 0, 10);
        $end_date = substr($row['wr_9'], 0, 10);
 
        // 아래처럼 해도 됩니다.
        // $start_date = date('Y-m-d', $row['wr_1']);
        // $end_date = date('Y-m-d', $row['wr_2']);
 
        $new_ca_name = '';
        if($start_date < G5_TIME_YMD && $end_date < G5_TIME_YMD){ 
            $new_ca_name = '종료';
        //} else if($start_date > G5_TIME_YMD && $end_date > G5_TIME_YMD){ 
          //  $new_ca_name = '시작전';
        //} else if($start_date < G5_TIME_YMD && $end_date < G5_TIME_YMD){ 
          //  $new_ca_name = '종료';
        } 
          
 
        if($new_ca_name) {
            if($new_ca_name == $row['ca_name']) continue; // 그냥 통과
 
            sql_query(" update {$write_table} set ca_name='{$new_ca_name}' where wr_id = '{$row['wr_id']}' "); 
        }
    }
 
    sql_query(" update {$g5['board_table']} set bo_1_subj='카테고리업데이트', bo_1='".G5_TIME_YMD."' where bo_table ='$bo_table' "); 
}
?>

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