그룹 최신글 + 페이징일때 출력되는 게시글 개수 제어하는 법

그룹 최신글 + 페이징일때 출력되는 게시글 개수 제어하는 법

QA

그룹 최신글 + 페이징일때 출력되는 게시글 개수 제어하는 법

본문

그룹 최신글에 페이징을 추가하고 있습니다.

$write_pages까지 정상 작동되게했는데, 출력되는 그룹 내 게시글의 개수를 제어하는 부분에서 막힙니다.

그룹 최신글의 구조를 제가 분석하기론 이러합니다.
-> 그룹이 있는 만큼 for문이 돌고 그 안에서 for문이 또 돌아서 게시글을 하나하나 가져옴

전체 출력 될 게시글을 제어하고 싶은데 어디에 limit를 걸어야하는지 모르겠네요..ㅠㅠ

쿼리에서 도저히 모르겠어서  array_splice($list, $rows)를 이용해서 배열의 페이징 부분만큼만 보여지게 해보려했는데도 씨알도 안먹히네요.. (예를 들어 이런식이요 array_splice($list, $from_record, $rows))

 

아래 코드로 하면 45개 게시글은 정상출력되는데, limt를 안해서 페이징이 안먹힙니다....

고수님들 부탁드립니다!!!!

 


//latest_group_paging사용법
//latest_group_paging("basic_group_list",그룹아이디, $_SERVER['PHP_SELF']."?gid=그룹아이디",$page,"page",출력라인,제목글자수,페이징 넘버 출력수);
latest_group_paging("basic_group_list_m",$gid, $_SERVER['PHP_SELF']."?gid=$gid",$page,"page",45,60,5);
 
// 그룹 최신글 추출 + 페이징
function latest_group_paging($skin_dir="", $gid, $url, $page=1, $page_name="page", $rows=5, $subject_len=40, $write_page=5, $total_count = '', $options="")
{
    global $fg_cfg, $config;
    if ($skin_dir) {
        $latest_skin_path = "{$fg_cfg['boardPath']}/latest/$skin_dir";
        $latest_skin_url = "{$fg_cfg['boardUrl']}/latest/$skin_dir";
    } else {
        $latest_skin_path = "{$fg_cfg['boardPath']}/latest/basic";
        $latest_skin_url = "{$fg_cfg['boardUrl']}/latest/basic";
    }
    
   $list = array();
    
    $group = get_group($gid);
    $idx = 0;
    $id = 0;
    $sql = " select * from fg_board where gid = '$gid'";
    $result = sql_query($sql);
    for ($bcnt=0; $board = sql_fetch_array($result); $bcnt++) {
        $bbs[] = $board;
    }
    for($bcnt=0; $bcnt < count($bbs); $bcnt++) {
        $board = $bbs[$bcnt];
        $tmp_write_table = get_fg_dbtable($board['bid']);
        
        $sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num ";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $id++;
        }
        
        // 게시물 구해오기
        $sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num";
        $result = sql_query($sql);
        for ($i=0; $row = sql_fetch_array($result); $i++) {
            $list[$idx] = get_list($row, $board, $latest_skin_path, $subject_len);
            $list[$idx]['board_subject']  = $board['bo_subject'];
            $list[$idx]['board_bid']  = $board['bid'];
            $is_teacher_comment = true;
            $idx++;
        }
        unset($board);
    }
    unset($bbs);
    
    $list = array_orderby($list, 'wr_datetime', SORT_DESC);
    array_splice($list, $rows);
    
//페이징과 관련있는 부분 ↓
    if($total_count == ""){
        $total_count = $id;
    }
    
    $total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
    if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이 지)
    $from_record = ($page - 1) * $rows; // 시작 열을 구함
    
    if(strstr($url, "?")) { 
        $connect = "&";
    } else { 
        $connect = "?";
    }
    $write_pages = get_paging($write_page, $page, $total_page, $url.$connect.$page_name."=");
    
    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
} 

 

이 질문에 댓글 쓰기 :

답변 1

query 문에서 limit 로 불러오는 페이지는 제한하는게 아니고,

include "$latest_skin_path/latest.skin.php";
이 파일에서 출력할때 제어를 해줘야 합니다.

for($i=$from_record; $i<$page*$rows; $i++) {

  echo $list[$i]['subject'];

}

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

회원로그인

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