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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
랜덤으로 나오게 하려면요.

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개의 임의의 데이터를 읽어온다 이런 뜻입니다.​

 

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

회원로그인

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