현재날짜와 필드 날짜 비교 >> 게시물이동 > 그누4 질문답변

그누4 질문답변

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

현재날짜와 필드 날짜 비교 >> 게시물이동 정보

현재날짜와 필드 날짜 비교 >> 게시물이동

본문

wr_4 에 2012-12-21 형식의 날짜를 받습니다 [직접씀]

그리고 현재 날짜랑 비교해서 같거나 지낫으면 제가 지정한 게시판으로 이동하게끔 했으면 합니다.[복사x]

[영화게시판에 쓸꺼니까 wr_4 에 들어있는건 개봉일이 되겟고 그 개봉일이 지낫거나 오늘이면 다른 게시판으로 이동하게 했으면합니다] [어느 특정게시판에서만]

댓글 전체

그런 기능을 하는 php를 만들기 보다, 기존에 있는 [게시물이동] 소스를 수정해서 사용하는 게 좋을 듯 보여집니다.
관리자일 경우 게시판의 글 중 체크박스를 클릭해 선택한 다음 원하는 게시판으로 이동하는 기능이 있음은 아시지요? 그 소스가 bbs/move.php 입니다.
move.php 의 38번째 줄($sql .= " order by a.gr_id, a.bo_order_search, a.bo_table ";) 그 앞에 아래 소스를 삽입하시면 될 것 같습니다.

if ($bo_table=="특정게시판명")
  $sql .= " and a.wr_4<='date_format(NOW(),"%Y-%m-%d")'";

이 부분을 넣어주면 [특정게시판명]일 경우
글을 체크한 뒤 이동명령을 내려도 wr_4를 비교해서 오늘날짜와 같거나 지났을 경우에만 이동됩니다.

테스트 안해봤으니 테스트해 보시고 안되면 다시 글 남기시기 바랍니다.
if ($bo_table=="특정게시판명")
  $sql .= " and a.wr_4<='date_format(NOW(),"%Y-%m-%d")'";

삽입하면

Parse error: syntax error, unexpected '%' in /bbs/move.php on line 40
에러가 뜨고
% 를 $ 로 고치면

Parse error: syntax error, unexpected T_VARIABLE in bbs/move.php on line 40
에러가 뜹니다 ;;
select * from g4_board a, g4_group b where a.gr_id = b.gr_id and bo_table <> 'week_movies' order by a.gr_id, a.bo_order_search, a.bo_table and a.wr_4<='date_format(NOW(),"%Y-%m-%d")'

1054 : Unknown column 'a.wr_4' in 'order clause'

error file : /bbs/move.php


라는 에러가 뜹니다 ㅜㅁ ㅜ
쩝. 지금 소스를 훑어보니 잘못 되었네요...
bbs/move.php 는 원래대로 되돌려 놓으시고, bbs/move_update.php 파일 속 21번째 줄

$sql = " select distinct wr_num from $write_table where wr_id in ($wr_id_list) order by wr_id ";

윗 부분을 아래와 같이 수정해 보세요....

if ($bo_table=="특정게시판명")
  $sql = " select distinct wr_num from $write_table where wr_id in ($wr_id_list) and wr_4<='date_format(NOW(),\"%Y-%m-%d\")' order by wr_id ";
else
  $sql = " select distinct wr_num from $write_table where wr_id in ($wr_id_list) order by wr_id ";

테스트해 보신 뒤 결과 알려주세요... 쩝.
에효~
어쩔 수 없게 되었군요...
지금은 당장 시간이 없고, 1-2일 뒤에 쪽지 보내겠습니다.
이틀 뒤에도 나로부터 쪽지가 없으면 쪽지로 재촉해 주세요...
아래의 코드를 원하는 파일명으로 저장합니다. (예) move_update.php
저장한 파일을 [설치폴더/extend] 로 복사합니다.
주석을 참고하셔서 질문자님의 환경에 맞게 변경하신 후 사용하시기 바랍니다.



<?php
/************************************************************************
하루에 1번만 실행합니다.
특정 테이블의 날짜가 현재 날짜와 비교해 이전이면 해당 게시물을 지정한 테이블로 복사 또는 이동시킵니다.
*************************************************************************/
$timer[now] = date("Y-m-d"); // 현재 날짜
$timer[last] = $config[cf_10]; // 최근실행 날짜정보를 가지는 여분필드

/* 여기서부터 사용자 환경에 따라 변경하시기 바랍니다. */
$timer[tbl_from] = "test1"; // 원본 테이블
$timer[tbl_field] = "wr_4"; // 날짜정보를 가지고 있는 테이블 컬럼명
$timer[tbl_to] = array("test"); // 이동할 테이블명 배열
$timer[sw] = "move"; // copy: 게시물 복사,  move: 게시물 이동
/* 여기까지 사용자 환경에 따라 변경 가능한 코드입니다. */

// 최근실행 날짜와 현재 날짜가 다르면 실행
if ($timer[last] != $timer[now]) {
$sql = " update $g4[config_table] set cf_10='$timer[now]' ";
sql_query($sql);

$fromTable = $g4[write_prefix] . $timer[tbl_from];
$sql = " select wr_id from $fromTable where cast($timer[tbl_field] as date) < now() ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
$wr_id_list[$i] = $row[wr_id];
}

if (count($wr_id_list)) {
$timer[wr_id_list] = implode(",", $wr_id_list);
move_update($timer);
}
}

function move_update($timer)
{
global $g4, $config, $member, $is_admin;

$sw = $timer[sw];
$bo_table = $timer[tbl_from];
$write_table = $g4['write_prefix'] . $bo_table;
$wr_id_list = $timer[wr_id_list];
$_POST['chk_bo_table'] = $timer[tbl_to];

ob_start();
include_once("$g4[bbs_path]/move_update.php");
ob_end_clean();
}
?>
답변을 쪽지로 드리려는데 쪽지를 보낼 수 없다고 나오는군요.

샤방s 님의 답변이 훌륭합니다. 소스에 내공이 느껴집니다.
샤방s 님의 답변을 채택하세요.
혹, 제 답변까지 필요하다면 쪽지 주시구요...
위에 두손모아님 댓글에서 힌트를 얻었습니다.
그렇지 않았다면 절대 저렇게 만들 수 없는 내공이랍니다.
좋은 말씀 감사드리며 질답게시판 활동하시는것 보면서 많이 본받아야겠다고 생각하고 있습니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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