기간제 인기 게시물 특정 기간 설정해서 추출할 수 있나요? 정보
기간제 인기 게시물 특정 기간 설정해서 추출할 수 있나요?본문
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=125284&sca=&sfl=wr_subject%7C%7Cwr_content&stx=dada
위처럼 dadada님의 그룹별 인기 게시물 스킨을 사용하고 있습니다.
그런데, 기간 설정할 때 현재 날짜로부터 과거 몇일간까지 밖에 추출이 안되더라구요..
(예를 들어 오늘부터 지난 7일간 등)
제가 원하는 것은 예를 들어 2011-10-01~ 2011-10-20 의 형식처럼
과거 특정일로부터 특정일까지의 추출인데... 방법이 없는지요.
며칠동안 검색해보고 이리저리 해봤는데...php 왕초보인 저는
도무지 안되네요ㅠㅠ
/extend 폴더의
izen.group.lib.php 소스 부분입니다.
<?
if (!defined('_GNUBOARD_')) exit;
/*
izen.group.lib.php
제작일 : 2006-12-08
지정 기간제 히트순 최근 게시물 수정본
http://www.sir.co.kr/bbs/tb.php/g4_tiptech/7328
그룹 최신글 관련하여 통합하도록 하였다.
정렬 필드값에 의해서 SQL 문을 추가하도록 하면 된다.
izen_group('izen_group', 'G02', wr_hit, 5, 28, 7);
예) echo izen_group('gr_best_news', 'news', wr_hit, 10, 28, 30);
*/
# 인기글
function izen_usort1($a, $b)
{
return $b['wr_hit'] - $a['wr_hit'];
}
# 헤드라인
function izen_usort2($a, $b)
{
return $b['wr_good'] - $a['wr_good'];
}
# 최신글 추출
function izen_group($skin_dir="", $gr_id, $izen_sort, $rows=10, $subject_len=40, $listdate)
{
global $g4;
$nowYmd = date(Ymd); # 시작시간을 구합니다.
$time = time();
$startYmd = date("Ymd",strtotime("-".$listdate." day", $time));
if ($skin_dir)
{
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
}
else
{
$latest_skin_path = "$g4[path]/skin/latest/basic";
}
$list = array();
$sql= " select bo_table from {$g4['board_table']} where gr_id='$gr_id' and bo_use_search='1' ";
$ress = sql_query($sql);
for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++)
{
$tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름
# 정렬 필드에 의해서 전체적으로 정렬, 관리한다.
if ($izen_sort == 'wr_hit')
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_scrap')
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_scrap <> 0 order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_datetime') # wr_1 헤드라인
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_1 = 1 order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_good') #
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_good <> '0' order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_id')
{
$sql_gr_Q = " wr_is_comment <> '1' order by $izen_sort desc limit 0, $rows ";
}
$sql = " select * from `$tmp_write_table` where $sql_gr_Q ";
$result = sql_query($sql);
#for (; $row=sql_fetch_array($result); $i++) # *오류* 전체 게시물 가운데 날짜에 상관없이 히트순으로 지정한 갯수만큼 출력된다.
for ($i==0; $row=sql_fetch_array($result); $i++)
{
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
$list[$i]['bo_table'] = $board['bo_table'];
}
}
if ($izen_sort == 'wr_hit')
{
usort($list, 'izen_usort1');
}
elseif ($izen_sort == 'wr_good')
{
usort($list, 'izen_usort2');
}
$list= array_slice($list, 0, $rows);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
?>
이부분을 어떻게 고쳐야할까요.
아님...추출하는 latest 스킨파일 상단에
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$list = array();
$tmp = "";
$sql= " select bo_table from {$g4['board_table']} where gr_id='$gr_id' and bo_use_search='1' ";
$result = sql_query($sql);
for($i=0; $i<$board=sql_fetch_array($result); $i++){
$tmp_write_table = $g4['write_prefix'] . $board['bo_table'];
$tmp .= " select '{$board['bo_table']}' as bo_table, wr_id, wr_subject, wr_content, wr_good, wr_hit, wr_last from $tmp_write_table where wr_is_comment=0 and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' UNION ALL ";
}
if($tmp) $tmp = "select * from ( ".substr($tmp,0,-10).") as a order by wr_good desc, wr_hit desc limit 4";
$result = sql_query($tmp);
for ($i=0; $row=sql_fetch_array($result); $i++){
$sql = "select * from {$g4['board_table']} where bo_table='$row[bo_table]'";
$board = sql_fetch($sql);
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$i]['bo_table'] = $board['bo_table'];
}
?>
요것을 수정해야 하는 것일까요.
도움을 주시면 감사하겠습니다...
위처럼 dadada님의 그룹별 인기 게시물 스킨을 사용하고 있습니다.
그런데, 기간 설정할 때 현재 날짜로부터 과거 몇일간까지 밖에 추출이 안되더라구요..
(예를 들어 오늘부터 지난 7일간 등)
제가 원하는 것은 예를 들어 2011-10-01~ 2011-10-20 의 형식처럼
과거 특정일로부터 특정일까지의 추출인데... 방법이 없는지요.
며칠동안 검색해보고 이리저리 해봤는데...php 왕초보인 저는
도무지 안되네요ㅠㅠ
/extend 폴더의
izen.group.lib.php 소스 부분입니다.
<?
if (!defined('_GNUBOARD_')) exit;
/*
izen.group.lib.php
제작일 : 2006-12-08
지정 기간제 히트순 최근 게시물 수정본
http://www.sir.co.kr/bbs/tb.php/g4_tiptech/7328
그룹 최신글 관련하여 통합하도록 하였다.
정렬 필드값에 의해서 SQL 문을 추가하도록 하면 된다.
izen_group('izen_group', 'G02', wr_hit, 5, 28, 7);
예) echo izen_group('gr_best_news', 'news', wr_hit, 10, 28, 30);
*/
# 인기글
function izen_usort1($a, $b)
{
return $b['wr_hit'] - $a['wr_hit'];
}
# 헤드라인
function izen_usort2($a, $b)
{
return $b['wr_good'] - $a['wr_good'];
}
# 최신글 추출
function izen_group($skin_dir="", $gr_id, $izen_sort, $rows=10, $subject_len=40, $listdate)
{
global $g4;
$nowYmd = date(Ymd); # 시작시간을 구합니다.
$time = time();
$startYmd = date("Ymd",strtotime("-".$listdate." day", $time));
if ($skin_dir)
{
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
}
else
{
$latest_skin_path = "$g4[path]/skin/latest/basic";
}
$list = array();
$sql= " select bo_table from {$g4['board_table']} where gr_id='$gr_id' and bo_use_search='1' ";
$ress = sql_query($sql);
for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++)
{
$tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름
# 정렬 필드에 의해서 전체적으로 정렬, 관리한다.
if ($izen_sort == 'wr_hit')
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_scrap')
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_scrap <> 0 order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_datetime') # wr_1 헤드라인
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_1 = 1 order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_good') #
{
$sql_gr_Q = " wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' and wr_good <> '0' order by $izen_sort desc limit 0, $rows ";
}
elseif ($izen_sort == 'wr_id')
{
$sql_gr_Q = " wr_is_comment <> '1' order by $izen_sort desc limit 0, $rows ";
}
$sql = " select * from `$tmp_write_table` where $sql_gr_Q ";
$result = sql_query($sql);
#for (; $row=sql_fetch_array($result); $i++) # *오류* 전체 게시물 가운데 날짜에 상관없이 히트순으로 지정한 갯수만큼 출력된다.
for ($i==0; $row=sql_fetch_array($result); $i++)
{
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
$list[$i]['bo_table'] = $board['bo_table'];
}
}
if ($izen_sort == 'wr_hit')
{
usort($list, 'izen_usort1');
}
elseif ($izen_sort == 'wr_good')
{
usort($list, 'izen_usort2');
}
$list= array_slice($list, 0, $rows);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
?>
이부분을 어떻게 고쳐야할까요.
아님...추출하는 latest 스킨파일 상단에
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$list = array();
$tmp = "";
$sql= " select bo_table from {$g4['board_table']} where gr_id='$gr_id' and bo_use_search='1' ";
$result = sql_query($sql);
for($i=0; $i<$board=sql_fetch_array($result); $i++){
$tmp_write_table = $g4['write_prefix'] . $board['bo_table'];
$tmp .= " select '{$board['bo_table']}' as bo_table, wr_id, wr_subject, wr_content, wr_good, wr_hit, wr_last from $tmp_write_table where wr_is_comment=0 and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' UNION ALL ";
}
if($tmp) $tmp = "select * from ( ".substr($tmp,0,-10).") as a order by wr_good desc, wr_hit desc limit 4";
$result = sql_query($tmp);
for ($i=0; $row=sql_fetch_array($result); $i++){
$sql = "select * from {$g4['board_table']} where bo_table='$row[bo_table]'";
$board = sql_fetch($sql);
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
$list[$i]['bo_table'] = $board['bo_table'];
}
?>
요것을 수정해야 하는 것일까요.
도움을 주시면 감사하겠습니다...
댓글 전체
지난 7일간은 간단한거 같습니다.
<?=izen_group('스킨명', '그룹명', 'wr_good', 출력수, 제목길이, ""); ?>
<?=izen_group('dada_refer_1', 'sub_1', 'wr_good', 4, 70, ""); ?>
원레 이렇게 되있는데요
이걸 아래처럼
<?=izen_group('스킨명', '그룹명', 'wr_good', 출력수, 제목길이, "기간"); ?>
<?=izen_group('dada_refer_1', 'sub_1', 'wr_good', 4, 70, "7"); ?>
이렇게 하시면 되는거 같은데요. 맨뒷부분을 "" 이렇게 두면 기간에 제한없이 전체에서 불러지는거 같아요
<?=izen_group('스킨명', '그룹명', 'wr_good', 출력수, 제목길이, ""); ?>
<?=izen_group('dada_refer_1', 'sub_1', 'wr_good', 4, 70, ""); ?>
원레 이렇게 되있는데요
이걸 아래처럼
<?=izen_group('스킨명', '그룹명', 'wr_good', 출력수, 제목길이, "기간"); ?>
<?=izen_group('dada_refer_1', 'sub_1', 'wr_good', 4, 70, "7"); ?>
이렇게 하시면 되는거 같은데요. 맨뒷부분을 "" 이렇게 두면 기간에 제한없이 전체에서 불러지는거 같아요
댓다구리님 답변 감사합니다. 그런데, 제가 질문한 것은 현재로부터 지난 7일을 추출하는 것이 아닌, 과거 특정한 날부터(예를 들어 2010년 7월 1일) 특정일까지(2010년 7월 31일까지)를 추출하는 것을 문의한 것이거든요.
izen_group 맨 뒤에 있던 기간을 시작 일자와 종료 일자로 받아서
select * from 테이블 where wr_datetime between 시작 일자 and 종료 일자 order by wr_good desc
정도 되겠네요.
이 스킨을 수정 하셔서 써야 될겁니다.
select * from 테이블 where wr_datetime between 시작 일자 and 종료 일자 order by wr_good desc
정도 되겠네요.
이 스킨을 수정 하셔서 써야 될겁니다.
감사합니다. 이리저리 꼼수로 해결했네요^^;