그룹 최신글 + 페이징일때 출력되는 게시글 개수 제어하는 법
본문
그룹 최신글에 페이징을 추가하고 있습니다.
$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'];
}
답변을 작성하시기 전에 로그인 해주세요.