랜덤으로 나오게 하려면요.

랜덤으로 나오게 하려면요.

QA

랜덤으로 나오게 하려면요.

본문

그룹으로 뽑아오는 최근 게시물인데요.

랜덤으로 돌리려고 하면 어찌해야 할까요?

 

44번째 줄에 있는 

        $sql .= (!$orderby) ? "  order by wr_hit desc " : "  order by wr_id desc ";

이 내용을

        $sql .= (!$orderby) ? "  order by rand()​";

이렇게 바꾸면 될 거라는 답을 받았는데요.

 

수정을 하고 나면 아래와 같은 에러다 나더라구요.

 

Parse error: syntax error, unexpected ';' in /home/hosting_users/dew_tongil/www/lib/latest_group.lib.php on line 44 

이런 에러가 나오는데 해결 방법이있을까요? 

 


<?
if (!defined('_GNUBOARD_')) exit;
 
function latest_group($skin_dir="", $gr_id, $rows=10, $subject_len=40, $no_table="", $category="", $orderby="")
{
	global $config;
	global $g4;
 
	$list = array(); $limitrows = $rows;
	$sqlgroup = " select bo_table, bo_subject,bo_9 from $g4[board_table] where gr_id = '$gr_id' $sqls ";
 
	// 제거할 테이블들
	if ($no_table) {
		$t_flag = serialize($no_table);
		if ($t_flag[0] == "a") {	//Array이면
			for ($ic=0; $ic<count($no_table); $ic++) {
				$sqlgroup .= " and bo_table != '$no_table[$ic]' ";
			}
		} else if ($t_flag[0] == "s") {	//String이면
			$sqlgroup .= " and bo_table != '$no_table' ";
		}
	}
 
	$sqlgroup .= " and bo_use_search=1 order by bo_order_search ";
	$rsgroup = sql_query($sqlgroup);
 
	if ($skin_dir)
		$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
	else
		$latest_skin_path = "$g4[path]/skin/latest/$config[cf_latest_skin]";
 
	for ($j=0, $k=0; $rowgroup=sql_fetch_array($rsgroup); $j++) {
		$bo_table = $rowgroup[bo_table];
 
		// 테이블 이름구함
		$sql = " select * from {$g4[board_table]} where bo_table = '$bo_table' ";
		$board = sql_fetch($sql);
 
		$tmp_write_table = $g4[write_prefix] . $bo_table; // 게시판 테이블 실제이름
		// 옵션에 따라 정렬
		$sql = "select * from $tmp_write_table where wr_is_comment = 0 ";
		// $sql .= "and wr_datetime > ( now() - interval 512 hour) ";
		$sql .= (!$category) ? "" : " and ca_name = '$category' ";
		$sql .= (!$orderby) ? "  order by wr_hit desc " : "  order by wr_id 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];
			}
 
			$list[$k] = get_list($row, $board, $latest_skin_path, $subject_len);
 
			$list[$k][bo_table] = $board[bo_table];
			$list[$k][bo_subject] = $board[bo_subject];
 
			$list[$k][bo_wr_subject] = cut_str($board[bo_subject] . $list[$k][wr_subject], $subject_len);
		}
	}
	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;
}
/// 함수 정의 끝
 
?> 

 

이 질문에 댓글 쓰기 :

답변 1

order by rand() 뒤에 limit '조회할 개수'를 붙여보세요

 

예를 들어

 

order by rand()​ limit 10 

 

이러면 10개의 임의의 데이터를 읽어온다 이런 뜻입니다.​

 

답변을 작성하시기 전에 로그인 해주세요.
전체 76
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT