최근 n개의 게시물 중에서 Hit 순으로 보이기 정보
그누보드 최근 n개의 게시물 중에서 Hit 순으로 보이기관련링크
본문
lib/latest.lib.php 파일을 참조하여 게시판 전체가 아닌 "최근 n개의 게시물 중에서 Hit 순으로 보이기"를 만들려고 합니다.
그런데 "최근 n개의 게시물"을 뽑아오는 방법을 몰라 헤메고 있습니다.
고수님들의 조언 간절히 부탁드립니다.
//==============================================================================
// 최근 n개의 게시물중에 가장 많이 읽힌 글
// 사용법 : tophit('스킨이름', '게시판아이디', 출력행, 제목길이, n개의 갯수)
//==============================================================================
function tophit($skin_dir='', $bo_table, $rows=10, $len=40, $n_total=50) <<=== $n_total 추가
{
::::::::::::::::::: 생략 ::::::::::::::::::::::
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bo = sql_fetch($sql);
$bo_subject = $bo[bo_subject];
$sql = " select *
from {$cfg[write_table_prefix]}{$bo_table}
where wr_comment = 0 and $n_total <<=== 이 부분을 어떻게 해야 하는지?
order by wr_hit desc limit 0, $rows ";
$result = sql_query($sql);
for ($i=0; $row = mysql_fetch_array($result); $i++) {
$list[$i] = $row;
::::::::::::::::::: 생략 ::::::::::::::::::::::
$latest_skin = $tmp_latest_skin;
}
추신: 링크에 걸린 참고 싸이트는 n개의 게시물이 아닌 날짜 제한에 의해 동작합니다.
그런데 "최근 n개의 게시물"을 뽑아오는 방법을 몰라 헤메고 있습니다.
고수님들의 조언 간절히 부탁드립니다.
//==============================================================================
// 최근 n개의 게시물중에 가장 많이 읽힌 글
// 사용법 : tophit('스킨이름', '게시판아이디', 출력행, 제목길이, n개의 갯수)
//==============================================================================
function tophit($skin_dir='', $bo_table, $rows=10, $len=40, $n_total=50) <<=== $n_total 추가
{
::::::::::::::::::: 생략 ::::::::::::::::::::::
$sql = " select * from $cfg[table_board] where bo_table = '$bo_table' ";
$bo = sql_fetch($sql);
$bo_subject = $bo[bo_subject];
$sql = " select *
from {$cfg[write_table_prefix]}{$bo_table}
where wr_comment = 0 and $n_total <<=== 이 부분을 어떻게 해야 하는지?
order by wr_hit desc limit 0, $rows ";
$result = sql_query($sql);
for ($i=0; $row = mysql_fetch_array($result); $i++) {
$list[$i] = $row;
::::::::::::::::::: 생략 ::::::::::::::::::::::
$latest_skin = $tmp_latest_skin;
}
추신: 링크에 걸린 참고 싸이트는 n개의 게시물이 아닌 날짜 제한에 의해 동작합니다.
댓글 전체
음, 마지막으로 하나만 더 물어봐도 될까요?
게시판에서 마지막 글에 대한 wr_id 값을 찾는 방법에 대해 알고 싶습니다.
만약 마지막 wr_id 값이 찾아진다면
$n_total=50
$max_wr_id = 마지막 wr_id
$tmp_wr_id = $max_wr_id - $n_total
$sql = " select *
from {$cfg[write_table_prefix]}{$bo_table}
where wr_id > $tmp_wr_id <<=== 이러면 되지 않을까요?
order by wr_hit desc limit 0, $rows ";
게시판에서 마지막 글에 대한 wr_id 값을 찾는 방법에 대해 알고 싶습니다.
만약 마지막 wr_id 값이 찾아진다면
$n_total=50
$max_wr_id = 마지막 wr_id
$tmp_wr_id = $max_wr_id - $n_total
$sql = " select *
from {$cfg[write_table_prefix]}{$bo_table}
where wr_id > $tmp_wr_id <<=== 이러면 되지 않을까요?
order by wr_hit desc limit 0, $rows ";
오늘 올라온 글인지, 24시간(하루)동안 올라온 최신글인지 명확하게 하셔야 할것 같군요.
만약 오늘이라면 24시 이후에 들어올경우 최신글이 하나도 없을수 있기 때문에....
오늘인지, 24시간인지 결정하셨다면 wr_datetime 의 값에 대한 조건을 기존 sql에 추가하시면 될것 같군요
만약 오늘이라면 24시 이후에 들어올경우 최신글이 하나도 없을수 있기 때문에....
오늘인지, 24시간인지 결정하셨다면 wr_datetime 의 값에 대한 조건을 기존 sql에 추가하시면 될것 같군요
먼저 root님의 친절한 답변 감사합니다. ^^;
저의 질문이 너무 난해한 느낌이 들어 죄송하지만,
처음 제가 생각한 참고 모델은 "오늘 올라온 글 중에 히트순으로 보이기"였습니다.
여기서 저는 단순히 "오늘 올라온 글" 대신 "최근 n개"로 바꾸고 싶은 것입니다.
아뭏튼 번거롭게 해 드려 죄송합니다.
저의 질문이 너무 난해한 느낌이 들어 죄송하지만,
처음 제가 생각한 참고 모델은 "오늘 올라온 글 중에 히트순으로 보이기"였습니다.
여기서 저는 단순히 "오늘 올라온 글" 대신 "최근 n개"로 바꾸고 싶은 것입니다.
아뭏튼 번거롭게 해 드려 죄송합니다.
두어가지 말씀드린다면
1. 최근 n개의 게시물 부분에서
현재 그누보드의 최신글의 latest() 인수중 3번째 "출력라인" 이라는것이 게시판에서 내가 가져오고자 하는 갯수(n개)입니다.
그러므로 카피레프트님이 추가하신 "n개의 갯수"는 의미가 없습니다.
# 사용방법
# latest(스킨, 게시판아이디, 출력라인, 글자수);
# 스킨은 입력하지 않을 경우 관리자 > 환경설정의 최신글 스킨경로를 기본 스킨으로 합니다.
latest('basic', 'test_table', 5, 70); // test_table라는 게시판에서 제목을 70자로 한정하여 5개의 행을 뽑아서 basic 스킨에 출력해라
2. Hit순으로 보이기는
2-1) 제가 확인을 해보지 못했으나 MySql 4.1인가 부터 SQL의 SubQuery를 지원한다고 들었습니다.
만약 사용하시는 MySql의 버전이 4.1 이상의 버전이라면
위의 쿼리를 다음처럼 변경해보세요.
다음은 사용자가 요청한 갯수만큼 뽑은 데이타를 wr_hit를 이용하여 정렬합니다.
$sql = " select * from
( select *
from {$cfg[write_table_prefix]}{$bo_table}
where wr_comment = 0
order by wr_id desc limit 0, $rows ) as a
order by wr_hit desc
";
2-2) 위의 서브 쿼리를 이용하지 못한다면
그누보드 원본 프로그램에서 조회하여 데이타를 넣어둔 $list에 들어있는 것을 소팅해야합니다.
이 $list 에는 latest()의 인수로 설정된 갯수만큼의 최근글을 모두 담고있습니다.
이 $list의 소팅에 대해서는 다음 링크에서 중간쯤에 있는 샘플들 중 multi_sort() 같은것을 참고하시기 바랍니다.
http://kr2.php.net/manual/en/function.uksort.php
1. 최근 n개의 게시물 부분에서
현재 그누보드의 최신글의 latest() 인수중 3번째 "출력라인" 이라는것이 게시판에서 내가 가져오고자 하는 갯수(n개)입니다.
그러므로 카피레프트님이 추가하신 "n개의 갯수"는 의미가 없습니다.
# 사용방법
# latest(스킨, 게시판아이디, 출력라인, 글자수);
# 스킨은 입력하지 않을 경우 관리자 > 환경설정의 최신글 스킨경로를 기본 스킨으로 합니다.
latest('basic', 'test_table', 5, 70); // test_table라는 게시판에서 제목을 70자로 한정하여 5개의 행을 뽑아서 basic 스킨에 출력해라
2. Hit순으로 보이기는
2-1) 제가 확인을 해보지 못했으나 MySql 4.1인가 부터 SQL의 SubQuery를 지원한다고 들었습니다.
만약 사용하시는 MySql의 버전이 4.1 이상의 버전이라면
위의 쿼리를 다음처럼 변경해보세요.
다음은 사용자가 요청한 갯수만큼 뽑은 데이타를 wr_hit를 이용하여 정렬합니다.
$sql = " select * from
( select *
from {$cfg[write_table_prefix]}{$bo_table}
where wr_comment = 0
order by wr_id desc limit 0, $rows ) as a
order by wr_hit desc
";
2-2) 위의 서브 쿼리를 이용하지 못한다면
그누보드 원본 프로그램에서 조회하여 데이타를 넣어둔 $list에 들어있는 것을 소팅해야합니다.
이 $list 에는 latest()의 인수로 설정된 갯수만큼의 최근글을 모두 담고있습니다.
이 $list의 소팅에 대해서는 다음 링크에서 중간쯤에 있는 샘플들 중 multi_sort() 같은것을 참고하시기 바랍니다.
http://kr2.php.net/manual/en/function.uksort.php