기간제 인기 게시물 특정 기간 설정해서 추출할 수 있나요?
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'];
}
?>
요것을 수정해야 하는 것일까요.
도움을 주시면 감사하겠습니다...
|
댓글을 작성하시려면 로그인이 필요합니다.
댓글 4개
<?=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"); ?>
이렇게 하시면 되는거 같은데요. 맨뒷부분을 "" 이렇게 두면 기간에 제한없이 전체에서 불러지는거 같아요
select * from 테이블 where wr_datetime between 시작 일자 and 종료 일자 order by wr_good desc
정도 되겠네요.
이 스킨을 수정 하셔서 써야 될겁니다.