최신글 인기순으로 뽑는데 기간내에 게시물수가 모자랄경우에요.

· 2013-07-01 (월) 02:35:37 · 1674 · 4
제목그대로 인기글을 뽑을때 기간을 오늘하루로 정해서 뽑는데 10개를 뽑을 경우 어떤날은 게시물이 10개가 안될때도 있고 될때도 있고 그렇습니다.ㅎㅎ;

안될때는 게시물수가 모자라 최신글 모양이 영~ 보기가 좋지 않아서 말인데요.

cnt로 오늘 10개가 안될경우 조건문을 어떻게 해야되는지 잘 모르겠습니다.

게시판마다 다 달라서 어떤게시판은 3일에 10개가 되는경우도 있고 10일에 10개가 되는경우도 있고 그렇습니다..

게시물이 10개가 안될경우 10개 이상인 날로 쿼리를 주려고 하니 잘 모르겠어서 질문드립니다..

$before_time = "1";

$before_time = date("Y-m-d H:i:s", mktime() - (86400 * $before_day));

$cnt_row = sql_fetch(" select count(*) as cnt from $tmp_write_table where wr_is_comment = 0 and wr_datetime >= '$before_time' ");

if ($cnt_row[cnt] <= "10"){
$before_time = "2";
} else if ($cnt_row[cnt]*2 <= "10") {
$before_time = "4";
} else {
$before_time = "1";
}

$sql = " select * from $tmp_write_table where wr_is_comment = 0 and wr_datetime >= '$before_time' order by $options desc, wr_comment desc, wr_hit desc limit 0, $rows ";
$qry = sql_query($sql);


이렇게 했더니 그냥 막나오던데;; 많이 엉터리죠? (ㅡㅡ)?

어떤식으로 처리해야될지 막막한데 도움좀 부탁드립니다...
|

댓글 4개

정작 답변에 필요한 봐야할 곳에서 소스를 딱 끊어서 올렸네요
2013-07-02 (화) 01:50:29
for ($i=0; $row = sql_fetch_array($qry); $i++) {
$list[$i] = mw_get_list($row, $board, $latest_skin_path, $subject_len);

$list[$i][href] = "/bbs/board.php?bo_table=$bo_table&wr_id=$row[wr_id]";
$list[$i][content] = $list[$i][wr_content] = "";
}

if ($minute > 0) {
mw_cache_write($cache_file_list, $list);
mw_cache_write($cache_file_board, $board);
}

이런식입니다. ㅎㅎ;;
10개가 안될경우 10개 이상인 날로 쿼리를 주려고 <-- 어떻게 하려는 것인지 이해가 안되는군요
다시보니 소스도 좀 이상해보입니다
$before_time 은 2013-07-02 10:30: 00 <ㅡ-- 이런 형식이어야할텐데
if ($cnt_row[cnt] <= "10"){
$before_time = "2"; <-- 이건 전혀 엉뚱한 값을 주는군요

3일 합쳐서 10개라면 3일치가 나오면 되는 것 아닌가요?
기본 latest() 함수 소스 그대로 해서 그냥 10개만 보여지면 안되나보죠?
2013-07-02 (화) 02:53:18
그 소스는 제가 할줄 몰라서 그렇게 수정한거라.. 혼란만 드렸네요.

본래 이렇습니다.

function mw_latest2($skin_dir="", $bo_table, $rows=10, $subject_len=40, $minute=0, $options, $before_day, $titles="")
{

$before_time = date("Y-m-d H:i:s", mktime() - (86400 * $before_day));

global $g4;

if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/basic";

$cache_file_list = "$g4[path]/data/mw.cache/latest-{$bo_table}-list-{$rows}-{$is_img}-{$subject_len}";
$cache_file_file = "$g4[path]/data/mw.cache/latest-{$bo_table}-file-{$rows}-{$is_img}-{$subject_len}";
$cache_file_board = "$g4[path]/data/mw.cache/latest-{$bo_table}-board-{$rows}-{$is_img}-{$subject_len}";

$list = mw_cache_read($cache_file_list, $minute);
$board = mw_cache_read($cache_file_board, $minute);
$file = mw_cache_read($cache_file_file, $minute);

if (!$list) {
$sql = " select * from $g4[board_table] where bo_table = '$bo_table'";
$board = sql_fetch($sql);

if ($board) {
$tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름

$sql = " select * from $tmp_write_table where wr_is_comment = 0 and wr_datetime >= '$before_time' order by $options desc, wr_comment desc, wr_hit desc limit 0, $rows ";
$qry = sql_query($sql);

for ($i=0; $row = sql_fetch_array($qry); $i++) {
$list[$i] = mw_get_list($row, $board, $latest_skin_path, $subject_len);
$list[$i][href] = "/bbs/board.php?bo_table=$bo_table&wr_id=$row[wr_id]";
$list[$i][content] = $list[$i][wr_content] = "";
}

if ($minute > 0) {
mw_cache_write($cache_file_list, $list);
mw_cache_write($cache_file_board, $board);
}

}
}

ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();

return $content;
}

본래 이런데 최신글 불러올때

<? echo mw_latest2("koralla.bbs.best", $top1, 10, 40, 5, "wr_hit", "1", "타이틀"); ?>
이렇게 하면 하루간 조회순으로 10개를 불러오게 됩니다.

그런데 게시판에 하루 최신글이 10개가 안되고 5개라치면 5개만 불러와서 최신글 스킨이 반이 텅 비게 됩니다.

그래서 게시판에 하루 최신글이 10개가 안될경우 하루간을 이틀간으로, 이틀도 최신글이 10개가 안될경우 삼일간 최신글 중에서 인기순으로 10개를 뽑아왔으면 해서 질문드렸습니다.

이해가 가실런지.. ^^?
댓글을 작성하시려면 로그인이 필요합니다.

그누4 질문답변

66,531건

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

+
제목 글쓴이 날짜 조회
13-07-01 조회 1,123
13-07-01 조회 1,675
13-07-01 조회 1,729
13-07-01 조회 1,075
13-07-01 조회 993
13-06-30 조회 901
13-06-30 조회 1,948
13-06-30 조회 854
13-06-30 조회 967
13-06-30 조회 1,965
13-06-30 조회 1,151
13-06-30 조회 1,126
13-06-30 조회 1,083
13-06-30 조회 1,167
13-06-30 조회 1,657
13-06-29 조회 1,924
13-06-29 조회 1,840
13-06-29 조회 1,925
13-06-29 조회 865
13-06-29 조회 1,074