일정시간이 지난후, 게시글의 특정값을 다르게 보여주려고 합니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

일정시간이 지난후, 게시글의 특정값을 다르게 보여주려고 합니다. 정보

질문 일정시간이 지난후, 게시글의 특정값을 다르게 보여주려고 합니다.

본문

리플수가 초과되어 원글이 수정이 되지않아 재질문을 드립니다. (질문글이 도배되는거 같아..찝찝)


우선 '게시물의 등록 timestamp값'과 '서버의 timestamp값'은 아래와 같습니다
(김영삼님의 도움으로 게시물등록 timestamp값을 정확히 얻었습니다)

$a_wrtime = strtotime($view[wr_datetime]); // 게시물등록 timestamp값
$b_ctime = time(); // 서버의 현재 timestamp값


서버의 현재시간과 게시물등록시간을 비교하여
게시물 등록후, 7일이라는 시간이 지나면 자동으로 게시물의 조건사항이 수정되도록 하기 위해 만드는 것입니다.

자동이라해서 7일동안 화면을 계속 열어둔다면 스스로 그 변한값을 보여주지는 않겠지요..
따라서, 게시물을 새로 보거나 할때 그 변한값을 보여주도록 하려는 것입니다.



우선 위 값들을 토대로 구문을 만들어 시간의 변동을 비교해보려면,
timestamp값이 있어야 하므로...

- 7일을 초로 계산해보면..
$regist_day = 604800; // 7일 (7*86400) ..........이렇게 되니까,

이것을 7일간의 총 timestamp값으로 변수로 만들면
$c_limit = $a_wrtime + $regist_day .......... 이렇게 될거고

따라서 7일후, $c_limit 값보다 $b_ctime 값이 커지면 아래 구문을 실행하게 합니다.


if($b_ctime > $limit_day) {
   
      $sql1= " update $write_table set wr_1 = '3' where wr_id = '$wr_id' ";
      sql_query($sql1);
}



이렇게 하면.. 게시물 등록후, 7일이 지나면 '해당 게시물(?)'의 wr_1값이
변한 상태로 게시물이 계속 저장되어 보여지기를 원합니다. 위처럼 하면 될듯 합니다.
(될지 안될지는 아직 모르겠습니다. 만약 틀리다면 지적해 주십시요)


문제는....

위 if 구문을 gnu파일중 어느곳에 넣어야 하는지 모르겠습니다.
지정된 시간이 흐른후, 해당 게시물의 리스트를 보거나 또는 내용화면을 봤을때
if문으로 처리한 값이 변동된 상태를 뿌려줘야 하는데 이렇게 보여지기 위해서

위 if구문을 gnu 어느파일에 넣어야할 파일의 위치를 모르겠습니다.
write_update.skin.php에 첨에 넣었다가 생각해보니 그긴, 파일의 '글쓰기','수정'시에만
실행이 되는거라 아닌거 같고...그래서 스킨파일에는 넣을수 없는듯하고..(?)

그렇다면 등록게시물의 날짜는 모두 다르니 그 게시물의 날짜를 조회해서
위 값을 처리하도록 한다음, if 구문이 실행되도록 해줘야할텐데
여기서 부터 막히는군요...


도움을 부탁드립니다.

댓글 전체

위의 내용은 날짜 2개를 일수로 계산해서 서로의 차이가 며칠인지에 따라 업데이트를 하게 됩니다.
me_send_datetime는 어디에서 나온 값인지 일단 잘 모르겠지만 등록일이라면 wr_datetime이겠고
날수의 차이이니 TIMESTAMP가 아니라 그냥 7로 적어주던가 해야 합니다.
아래와 같이 테스트 하였으나, wr_1의 값이 변하지 않고 아래와 같이 에러가 납니다.
다른 문제하나는 list.skin.php에서 a_wrtime = strtotime($view[wr_datetime]);  이값에서 시,분,초가
제대로 뿌려지지를 않는거 같네요

<?
$a_wrtime = strtotime($view[wr_datetime]); // 게시물등록 timestamp값
$b_ctime = time(); // 서버의 현재 timestamp값
$regist_day = 205; // 7일 (7*86400)

$c_limit = $a_wrtime + $regist_day;
$test = date('Y-m-d H:i:s', $c_limit);
echo $test;

$sql1= " update $write_table set wr_1 = '3' where wr_datetime (TO_DAYS('{$g4['time_ymdhis']}') - TO_DAYS(me_send_datetime)) > '{$c_limit}' ";
sql_query($sql1);
?>


-- 에러내용--

update g4_write_tme_02b01 set wr_1 = '3' where wr_datetime (TO_DAYS('2005-07-18 20:04:14') - TO_DAYS(me_send_datetime)) > '1121612605'

1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(TO_DAYS('2005-07-18 20:04:14') - TO_DAYS(me_send_datetime)) >

error file : /그누보드폴더명/bbs/board.php
리플 감사드립니다..
리플 주신내용들을 바탕으로 지금 테스트 작업을 하고있습니다.
정상적으로 실행된다는 가정하에, 위 구문을 어느 파일의 어느부분에 넣어두는게 적당할런지요..
(참고로, 현재 wr_1 여유필드의 값은 list.skin.php와 view.skin.php에 뿌려지고있습니다.)
7일이 지난는지의 여부 파악은 리스트에서 하는것이 맞을 것으로 판단됩니다.
그러나 리스트에서 update 를 날린다는것은 속도적인 측면에서 좀 부담스러운 작업이 되지 않을까 싶군요.
if문을 없애고 $sql1= " update $write_table set wr_1 = '3' where wr_datetime (TO_DAYS('{$g4['time_ymdhis']}') - TO_DAYS(me_send_datetime)) > '{$limit_day}' ";

이건 adm/index.php를 참고한겁니다.
>7일이 지나면 '해당 게시물(?)'의 wr_1값
먼저 7일 지난 데이타를 어떤 용도로 사용하실려고 하는지부터 알아야 할것 같군요.
꼭 wr_1이나 기타 필드에 저장을 해야 하는것인지 부터...??

내용상으로 봤을때는 게시판 조회시에 7일이 지난것인지 아닌지를 파악해서 조회하도록 하는것이 수순일것 같습니다.

조회시에 wr_1을 읽어서 7일 여부를 판단할려면 서버에 백그라운 프로세서가 하나 떠서 시간이 흐를때마다 7일이 지났는지의 여부를 판단하는 프로그램이 돌아야 할것 같습니다.

먼저 사용목적과 어떻게 적용해서 사용하실건지를 알려주십시오.^^
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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