테스트 사이트 - 개발 중인 베타 버전입니다

그룹최신글 랜덤으로 불러오기 채택완료

부사내 6년 전 조회 4,807

몇가지 질문답변글을 검색해서 적용해봐도 잘 안되네요 ㅠㅠ

 

아래 그룹 최신글을 불러오는 소스이고 최신글중 wr_9에 체크된 것만 불러와지고 있습니다.

어느 부분을 rand()로 수정해야할까요.

 

</p>

<p> </p>

<p>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); </p>

<p>        

        

        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; 

} </p>

<p> </p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
6년 전

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 "

로 하시면 될 것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

부사내
6년 전
네 그부분을 암만 바꿔봐도 동작을 안하는군요 ㅠ

댓글을 작성하려면 로그인이 필요합니다.

잉끼s
6년 전

</p>

<pre>
echo latest_group3(스킨명, 그룹아이디,10, 40,200,'',카테고리, ' order by rand() '); </pre>

<p>

latest_group3() 호출 하실 때 마지막 인자가 order by 값입니다. 이것만 order by rand() 로 바꿔주세요.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

부사내
6년 전
네 ㅠ 알려주신 방법대로 그대로 적용해봐도 게시물이 없다고 나오거나 나오더라도 날짜순으로 정렬이 됩니다 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

o
6년 전

디비에서 바로가져오시면 일정 최신글을 받으시고

shuffle 을 이용해 보세요

 

shuffle($list); //list 구한 후에 넣어 주세요

 

 if($k>0) array_multisort($op_list, SORT_DESC, $list); 
 if($k>$rows) array_splice($list, $rows); 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인