그룹최신글 랜덤으로 불러오기
본문
몇가지 질문답변글을 검색해서 적용해봐도 잘 안되네요 ㅠㅠ
아래 그룹 최신글을 불러오는 소스이고 최신글중 wr_9에 체크된 것만 불러와지고 있습니다.
어느 부분을 rand()로 수정해야할까요.
function latest_group3($skin_dir="", $gr_id, $rows=10, $subject_len=40, $contents_len=200, $options="", $category="", $orderby="") {
global $config;
global $g5;
$list = array();
$limitrows = $rows;
$sql_groupname = " select gr_subject from ".$g5['group_table']." where gr_id='".$gr_id."' ";
$rowgroup = sql_fetch_array(sql_query($sql_groupname));
$gr_subject = $rowgroup['gr_subject'];
$sqlgroup = " select bo_table, bo_subject from ".$g5['board_table']." where gr_id='".$gr_id."' and bo_use_search=1 order by bo_order";
$rsgroup = sql_query($sqlgroup);
if (!$skin_dir) $skin_dir = 'basic';
if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
if (G5_IS_MOBILE) {
$latest_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
if(!is_dir($latest_skin_path))
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
} else {
$latest_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/latest/'.$match[1];
$latest_skin_url = str_replace(G5_PATH, G5_URL, $latest_skin_path);
}
$skin_dir = $match[1];
} else {
if(G5_IS_MOBILE) {
$latest_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
$latest_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/latest/'.$skin_dir;
} else {
$latest_skin_path = G5_SKIN_PATH.'/latest/'.$skin_dir;
$latest_skin_url = G5_SKIN_URL.'/latest/'.$skin_dir;
}
}
for ($j=0, $k=0; $rowgroup = sql_fetch_array($rsgroup); $j++) {
$bo_table = $rowgroup['bo_table'];
// 테이블 이름구함
$sql = " select * from ".$g5['board_table']." where bo_table='".$bo_table."'";
$board = sql_fetch($sql);
$tmp_write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 실제이름
// 옵션에 따라 정렬
$sql = "select * from ".$tmp_write_table." where wr_is_comment = 0 and wr_9 = '1' " ;
$sql .= (!$category) ? "" : " and ca_name = '".$category."' ";
$sql .= (!$orderby) ? " order by wr_datetime desc " : " order by ".$orderby." desc, wr_datetime desc ";
$sql .= " limit ".$limitrows."";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++, $k++) {
if(!$orderby) {
$op_list[$k] = $row['wr_datetime'];
} else {
$op_list[$k] = is_string($row[$orderby]) ? sprintf("%-256s", $row[$orderby]) : sprintf("%016d", $row[$orderby]);
$op_list[$k] .= $row['wr_datetime'];
$op_list[$k] .= $row['wr_name'];
}
$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len, $wr_name, $wr_9);
$list[$k]['bo_table'] = $board['bo_table'];
$list[$k]['bo_subject'] = $board['bo_subject'];
$list[$k]['wr_name'] = $board['wr_name'];
$list[$k]['bo_wr_subject'] = cut_str($board['bo_subject'] . $list[$k]['wr_subject'], $subject_len, $wr_name, $wr_9);
}
}
if($k>0) array_multisort($op_list, SORT_DESC, $list);
if($k>$rows) array_splice($list, $rows);
ob_start();
include $latest_skin_path."/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
답변 3
50 라인
$sql
.= (!
$orderby
) ?
" order by wr_datetime desc "
:
" order by "
.
$orderby
.
" desc, wr_datetime desc "
;
부분을
$sql
.= (!
$orderby
) ?
" order by rand(), wr_datetime desc "
:
" order by "
.
$orderby
.
" desc, wr_datetime desc "
;
로 하시면 될 것 같습니다.
디비에서 바로가져오시면 일정 최신글을 받으시고
shuffle 을 이용해 보세요
shuffle($list); //list 구한 후에 넣어 주세요
if($k>0) array_multisort($op_list, SORT_DESC, $list);
if($k>$rows) array_splice($list, $rows);
echo latest_group3(스킨명, 그룹아이디,10, 40,200,'',카테고리, ' order by rand() ');
latest_group3() 호출 하실 때 마지막 인자가 order by 값입니다. 이것만 order by rand() 로 바꿔주세요.
!-->
답변을 작성하시기 전에 로그인 해주세요.