그룹 최신글 + 페이징일때 출력되는 게시글 개수 제어하는 법 채택완료
그룹 최신글에 페이징을 추가하고 있습니다.
$write_pages까지 정상 작동되게했는데, 출력되는 그룹 내 게시글의 개수를 제어하는 부분에서 막힙니다.
그룹 최신글의 구조를 제가 분석하기론 이러합니다.
-> 그룹이 있는 만큼 for문이 돌고 그 안에서 for문이 또 돌아서 게시글을 하나하나 가져옴
전체 출력 될 게시글을 제어하고 싶은데 어디에 limit를 걸어야하는지 모르겠네요..ㅠㅠ
쿼리에서 도저히 모르겠어서 array_splice($list, $rows)를 이용해서 배열의 페이징 부분만큼만 보여지게 해보려했는데도 씨알도 안먹히네요.. (예를 들어 이런식이요 array_splice($list, $from_record, $rows))
아래 코드로 하면 45개 게시글은 정상출력되는데, limt를 안해서 페이징이 안먹힙니다....
고수님들 부탁드립니다!!!!
</strong></p>
<p>//latest_group_paging사용법</p>
<p>//latest_group_paging("basic_group_list",그룹아이디, $_SERVER['PHP_SELF']."?gid=그룹아이디",$page,"page",출력라인,제목글자수,페이징 넘버 출력수);
<strong>latest_group_paging("basic_group_list_m",$gid, $_SERVER['PHP_SELF']."?gid=$gid",$page,"page",45,60,5);</strong></p>
<p> </p>
<p>// 그룹 최신글 추출 + 페이징
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;</p>
<p> 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);
</p>
<p>//페이징과 관련있는 부분 ↓
<span style="background-color:#dddddd;"> if($total_count == ""){</span>
<span style="background-color:#dddddd;"> $total_count = $id;</span>
<span style="background-color:#dddddd;"> }</span>
<span style="background-color:#dddddd;"> </span>
<span style="background-color:#dddddd;"> $total_page = ceil($total_count / $rows); // 전체 페이지 계산</span>
<span style="background-color:#dddddd;"> if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이 지)</span>
<span style="background-color:#dddddd;"> $from_record = ($page - 1) * $rows; // 시작 열을 구함</span>
<span style="background-color:#dddddd;"> </span>
<span style="background-color:#dddddd;"> if(strstr($url, "?")) { </span>
<span style="background-color:#dddddd;"> $connect = "&";</span>
<span style="background-color:#dddddd;"> } else { </span>
<span style="background-color:#dddddd;"> $connect = "?";</span>
<span style="background-color:#dddddd;"> }</span></p>
<p><span style="background-color:#dddddd;"> $write_pages = get_paging($write_page, $page, $total_page, $url.$connect.$page_name."=");</span>
<span style="background-color:#dddddd;"> </span>
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();</p>
<p> return $content;
} </p>
<p><strong>
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인