지정 기간제 히트순 최근 게시물 수정본 정보
지정 기간제 히트순 최근 게시물 수정본본문
지난번 자료를 수정해 봤습니다.
스크랩 기능을 활용하려면 아래 절차를 먼저 하셔야 합니다.
1. 필드추가
wr_scrap int(11) NOT NULL default '0',
2. ./bbs/scrap_popin_update.php 85 라인 이후에 추가(카운트 증가)
$sql_Q = " update $write_table set wr_scrap = wr_scrap + 1 where wr_id = '$wr_id' ";
sql_query($sql_Q);
3. ./bbs/scrap_delete.php 5라인 이후에 추가(카운트 감소)
# 삭제시 스크랩 카운터를 '1' 줄여야 한다.
$sql_scrap = " select wr_id, bo_table from $g4[scrap_table] where mb_id = '$member[mb_id]' and ms_id = '$ms_id' ";
$row_scrap = sql_query($sql_scrap);
for ($i=0; $Q_scrap=sql_fetch_array($row_scrap); $i++)
{
$write_table = $g4['write_prefix'] . $Q_scrap[bo_table];
$sql_Q = " update $write_table set wr_scrap = wr_scrap - 1 where wr_id = '$Q_scrap[wr_id]' ";
sql_query($sql_Q);
}
위와같이 작업했다면 그림과 같이 스크랩 출력을 할수가 있습니다.
물론, 스크랩 출력을 사용하지 않을거라면 필요없는 과정입니다.
# ./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('스킨', '그룹명', 정렬필드, 출력갯수, 자를 문자열, 최근 몇일간을 출력할 것인가?);
예) 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' order by bo_order_search ";
$ress = sql_query($sql);
for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++)
{
$tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름
#$sql = "select * from `$tmp_write_table` where wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $sort desc limit 0, $rows ";
# 정렬 필드에 의해서 전체적으로 정렬, 관리한다.
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);
}
}
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;
}
?>
# ./skin/latest/izen_group_new/latest.skin.php
<?
if (!defined("_GNUBOARD_")) exit;
# $sub_title = "{$listdate}일간의 베스트 글";
if ($izen_sort == 'wr_hit')
{
$sub_title = "주간 인기글";
}
elseif ($izen_sort == 'wr_scrap')
{
$sub_title = "주간 최다스크랩";
}
elseif ($izen_sort == 'wr_good')
{
$sub_title = "주간 추천베스트";
}
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td height="22"><img src="<?=$g4[tema_img]?>/latest/icon_pp.gif"/><span style="color:#cc3300; font-weight:bold;"><?=$sub_title?></span></a></td></tr>
<tr><td height="2"></td></tr>
<tr><td height="1" bgcolor="#e1e1e1"></td></tr>
<tr><td height="3"></td></tr>
<?
for ($i=0; $i<count($list); $i++)
{
echo "<tr><td height=\"20\"><img src=\"$g4[tema_img]/latest/icon_news_hot.gif\" align=\"absmiddle\"/>";
echo "<a href='{$list[$i]['href']}'>";
echo "<span style=\"color:#656565;\">{$list[$i]['subject']}</span>";
echo "</a>";
if ($izen_sort == 'wr_hit')
{
echo " <span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">({$list[$i]['wr_hit']})</span>";
}
if ($izen_sort == 'wr_scrap')
{
echo " <span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">({$list[$i]['wr_scrap']})</span>";
}
if ($izen_sort == 'wr_good')
{
echo " <span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">({$list[$i]['wr_good']})</span>";
}
if ($list[$i]['comment_cnt'])
{
echo " <a href=\"{$list[$i]['comment_href']}\"><span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">{$list[$i]['comment_cnt']}</span></a>";
}
echo "</td></tr>";
} # for
if (count($list) == '0')
{
echo "<tr><td align=\"center\" height=\"50\"><font color=\"#6A6A6A\">게시물이 없습니다.</a></td></tr>";
}
?>
</table>
스크랩 기능을 활용하려면 아래 절차를 먼저 하셔야 합니다.
1. 필드추가
wr_scrap int(11) NOT NULL default '0',
2. ./bbs/scrap_popin_update.php 85 라인 이후에 추가(카운트 증가)
$sql_Q = " update $write_table set wr_scrap = wr_scrap + 1 where wr_id = '$wr_id' ";
sql_query($sql_Q);
3. ./bbs/scrap_delete.php 5라인 이후에 추가(카운트 감소)
# 삭제시 스크랩 카운터를 '1' 줄여야 한다.
$sql_scrap = " select wr_id, bo_table from $g4[scrap_table] where mb_id = '$member[mb_id]' and ms_id = '$ms_id' ";
$row_scrap = sql_query($sql_scrap);
for ($i=0; $Q_scrap=sql_fetch_array($row_scrap); $i++)
{
$write_table = $g4['write_prefix'] . $Q_scrap[bo_table];
$sql_Q = " update $write_table set wr_scrap = wr_scrap - 1 where wr_id = '$Q_scrap[wr_id]' ";
sql_query($sql_Q);
}
위와같이 작업했다면 그림과 같이 스크랩 출력을 할수가 있습니다.
물론, 스크랩 출력을 사용하지 않을거라면 필요없는 과정입니다.
# ./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('스킨', '그룹명', 정렬필드, 출력갯수, 자를 문자열, 최근 몇일간을 출력할 것인가?);
예) 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' order by bo_order_search ";
$ress = sql_query($sql);
for($i=0, $ii=0; $board=sql_fetch_array($ress); $ii++)
{
$tmp_write_table = $g4['write_prefix'] . $board['bo_table']; # 게시판 테이블 전체이름
#$sql = "select * from `$tmp_write_table` where wr_is_comment <> '1' and date_format(wr_datetime, '%Y%m%d') between '$startYmd' and '$nowYmd' order by $sort desc limit 0, $rows ";
# 정렬 필드에 의해서 전체적으로 정렬, 관리한다.
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);
}
}
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;
}
?>
# ./skin/latest/izen_group_new/latest.skin.php
<?
if (!defined("_GNUBOARD_")) exit;
# $sub_title = "{$listdate}일간의 베스트 글";
if ($izen_sort == 'wr_hit')
{
$sub_title = "주간 인기글";
}
elseif ($izen_sort == 'wr_scrap')
{
$sub_title = "주간 최다스크랩";
}
elseif ($izen_sort == 'wr_good')
{
$sub_title = "주간 추천베스트";
}
?>
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td height="22"><img src="<?=$g4[tema_img]?>/latest/icon_pp.gif"/><span style="color:#cc3300; font-weight:bold;"><?=$sub_title?></span></a></td></tr>
<tr><td height="2"></td></tr>
<tr><td height="1" bgcolor="#e1e1e1"></td></tr>
<tr><td height="3"></td></tr>
<?
for ($i=0; $i<count($list); $i++)
{
echo "<tr><td height=\"20\"><img src=\"$g4[tema_img]/latest/icon_news_hot.gif\" align=\"absmiddle\"/>";
echo "<a href='{$list[$i]['href']}'>";
echo "<span style=\"color:#656565;\">{$list[$i]['subject']}</span>";
echo "</a>";
if ($izen_sort == 'wr_hit')
{
echo " <span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">({$list[$i]['wr_hit']})</span>";
}
if ($izen_sort == 'wr_scrap')
{
echo " <span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">({$list[$i]['wr_scrap']})</span>";
}
if ($izen_sort == 'wr_good')
{
echo " <span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">({$list[$i]['wr_good']})</span>";
}
if ($list[$i]['comment_cnt'])
{
echo " <a href=\"{$list[$i]['comment_href']}\"><span style=\"font-family:돋움; font-size:8pt; color:#9A9A9A;\">{$list[$i]['comment_cnt']}</span></a>";
}
echo "</td></tr>";
} # for
if (count($list) == '0')
{
echo "<tr><td align=\"center\" height=\"50\"><font color=\"#6A6A6A\">게시물이 없습니다.</a></td></tr>";
}
?>
</table>
추천
4
4
댓글 22개
고생하셨습니다.
감사합니다.
오~ 굿 입니다. 좋은 오후 보내세요 !!!
^^
오랫만에 뵙습니다.
오랫만에 뵙습니다.
멋진팁입니다.
주간을 넘어 월간, 년간도 처리되면 좋겠군요.
조금 응용하여 월별 주간통계, 년간 월별 통계,... 너무 복잡해지나요.
주간을 넘어 월간, 년간도 처리되면 좋겠군요.
조금 응용하여 월별 주간통계, 년간 월별 통계,... 너무 복잡해지나요.
절래절래~~~~
제가 필요한 만큼만 하렵니다. ㅠㅠ;
얼른 오픈하려니 마음만 바쁜것인지...... ^^
root님의 손길이 닿으면 훨씬 좋아지지 않을까요?
ㅎㅎㅎ.........
제가 필요한 만큼만 하렵니다. ㅠㅠ;
얼른 오픈하려니 마음만 바쁜것인지...... ^^
root님의 손길이 닿으면 훨씬 좋아지지 않을까요?
ㅎㅎㅎ.........
기간 히트란 것이
기간 안에 히트"한 것이 대상이 아니라
기간 안에 게시물 히트 수를 가지고 한 것이죠?
기간 안에 히트"한 것을 대상으로 하려면 어떤 방법이 좋을까요?
기간 안에 히트"한 것이 대상이 아니라
기간 안에 게시물 히트 수를 가지고 한 것이죠?
기간 안에 히트"한 것을 대상으로 하려면 어떤 방법이 좋을까요?
초보자에게 물으시다니.... ^^;
솔직히 "기간 안에 히트"한 것을 대상으로 하려면 어떤 방법이 좋을까요?" 말씀하신 내용을 이해하지 못했습니다.
솔직히 "기간 안에 히트"한 것을 대상으로 하려면 어떤 방법이 좋을까요?" 말씀하신 내용을 이해하지 못했습니다.
히트 즉 열람한 것에 대해서 가장 많이 열람한 게시물
여기서 기간 안에 히트한"에서 기간을 오늘이라고 하면
오늘 이전 열람한 것은 전체 열람 횟수에서 빼는 거죠.
여기서 기간 안에 히트한"에서 기간을 오늘이라고 하면
오늘 이전 열람한 것은 전체 열람 횟수에서 빼는 거죠.
'기간내 히트'한 것을 대상으로 한다면,
최소한 두가지 제어사항을 기재해야 겠지요.
첫째는...
기간(몇일, 몇개월 ...)
둘째는...
기준이 되는 최소 클릭(히트, 열람)수
최소한 두가지 제어사항을 기재해야 겠지요.
첫째는...
기간(몇일, 몇개월 ...)
둘째는...
기준이 되는 최소 클릭(히트, 열람)수
뽀뽀? 하시느라 바쁘신데도 불구하고..... ^^
생각해 본 것이
한 게시물에 대해서 열람 횟수를 기간 별로 나누어 볼 수 있지 않을까 해서요.
10번 게시물이 1일에는 13번, 2일에는 18번, ...
그렇게 해서 오늘 가장 많이 본 게시물은 무엇일까 하는 거였죠.
생각해 본 것이
한 게시물에 대해서 열람 횟수를 기간 별로 나누어 볼 수 있지 않을까 해서요.
10번 게시물이 1일에는 13번, 2일에는 18번, ...
그렇게 해서 오늘 가장 많이 본 게시물은 무엇일까 하는 거였죠.
rolo님의 의견을 수용하려면 별도로 필드를 할당하여 저장을 해야 하겠는데요?
현재 시스템으로는 즉시 결과를 얻기는 불가능할것 같은데 말입니다.
야후 뉴스에 보면 "오늘 많이 읽은글", "1시간동안 많이 읽은 글" 등으로 분류를 해뒀던데 편리하기는 하더군요.
사이트에 따라서 생각해 볼만한 제안이십니다.
^^
현재 시스템으로는 즉시 결과를 얻기는 불가능할것 같은데 말입니다.
야후 뉴스에 보면 "오늘 많이 읽은글", "1시간동안 많이 읽은 글" 등으로 분류를 해뒀던데 편리하기는 하더군요.
사이트에 따라서 생각해 볼만한 제안이십니다.
^^
2개월된 조카가 왔었는데...
마냥 좋아야 하는 데도 불구하고,
살아갈 일이 먼저 가슴을 짓누릅니다.
마냥 좋아야 하는 데도 불구하고,
살아갈 일이 먼저 가슴을 짓누릅니다.
수고많으셨습니다~^^
좋은 소스입니다.
최근게시물앞에 게시판 이름을 출력하려면 어떤 변수를 써야 하나요?
list[$][bo_subject]는 먹지 않던데요?
list[$][bo_subject]는 먹지 않던데요?
그러게요 테이블 관련 변수가 다 먹히질 안네용...
링크가 {$list[$i]['href']} 이렇게 되있어서 내용말구 리스트로 가구 싶어서
<a href='{$g4['bbs_path']}/board.php?bo_table={$list[$i]['bo_table']}
라고 해줘도 테이블 명을 불러 드리지 못하네용... 이유가 무엇일까 ....ㅜㅜ
링크가 {$list[$i]['href']} 이렇게 되있어서 내용말구 리스트로 가구 싶어서
<a href='{$g4['bbs_path']}/board.php?bo_table={$list[$i]['bo_table']}
라고 해줘도 테이블 명을 불러 드리지 못하네용... 이유가 무엇일까 ....ㅜㅜ
제외할 게시판이 있다면 어떻게 해야 하나요?
우와 너무 감사하니다ㅋ
굳입니다. 오누리도 됨.
프로그램 오류가 있습니다.
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
이부분을
$list[] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
로 해주셔야 합니다.
usort정렬하기 전에
2중 루프내부의 $i 로 인해서 배열이 계속 덮어씌워지기 때문에 원치 않는 결과가 나옵니다.
배열이 계속 합쳐진 후에 정렬시켜야 하는데
배열이 합쳐지지 않고 덮어씌워지고 있네요.
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
이부분을
$list[] = get_list($row, $board, $latest_skin_path, $subject_len, $listdate);
로 해주셔야 합니다.
usort정렬하기 전에
2중 루프내부의 $i 로 인해서 배열이 계속 덮어씌워지기 때문에 원치 않는 결과가 나옵니다.
배열이 계속 합쳐진 후에 정렬시켜야 하는데
배열이 합쳐지지 않고 덮어씌워지고 있네요.
대전스토리