게시판 공지 갯수를 목록수에서 제외하고 싶습니다.

게시판 공지 갯수를 목록수에서 제외하고 싶습니다.

QA

게시판 공지 갯수를 목록수에서 제외하고 싶습니다.

본문

관리자에서

 

게시판 목록수를 10개로 조정했는데요.

 

공지포함 10개가 아니라

공지제외 10개로 하려면 어디를 고쳐야 하나요?

 

$page_rows += $notice_count; 

 

하면

되긴하는데

2페이지 가면

1페이지의 마지막 게시물이 

2페이지의 첫번째 게시물로 와있습니다;

이 질문에 댓글 쓰기 :

답변 2

게시판의 bo_table 명이  free 라고 가정하고


$write_table = $g5['write_prefix'] . $bo_table;
$sql  = "select count(*) cnt from {$write_table} a ";
$sql_common = " where not exists (select 'x' from {$g5['board_table']} b where a.wr_id in (b.bo_notice) )";
$sql .= $sql_common;

으로 해서 쿼리를 만들어보시면 공지글은 카운트하지 않습니다.

 

$sql 과

$sql_common

은 분리한건 알아서 잘 적절히 사용하셔야 할겁니다.

 

단, table명에 alias는 wrtie_table 에 a로 주셨는지

다른이름으로 주시면 위의 예제를 동일하게 변경하시면됩니다.

 

혹시라도 오류나면 알려주세요 저도 실행해보지 않고 작성해드린것이라서요

 

  아 제가 누락한게 있네요

$write_table = $g5['write_prefix'] . $bo_table;
$sql  = "select count(*) cnt from {$write_table} a ";
$sql_common = " where not exists (select 'x' from {$g5['board_table']} b where b.bo_table = '{$bo_table}' and a.wr_id in (b.bo_notice) ) ";

$sql .= " and wr_is_comment = '0' ";

$sql .= $sql_common;

로 변경해보세요

g5_board 에서 bo_talble을 선택하는걸 누락했네요 (죄송~)

답변 감사드립니다.
적어주신 쿼리가 게시판에서
공지를 제외한 게시물 수를 가져오는 쿼리 같은데요.

이미 list.php 에
notice_count 가 있는게
굳이 따로 구하는 이유가 있을까요?;


그리고
위의 쿼리를 total_count 구할때 써야하는건가요!?


글의 리스트수를 구할때
그누보드의 뿐만 아니라. 대부분의 페이징 구하는 방식이

기본적인 조건절을 만들고

select 구문만

$sql 변수에 담아서
각기 다르게

결합시켜서 쿼리를 만드는 패턴을 갖고있습니다.

전체게시글수 의 쿼리문이 select count(*) ...
로 시작하는 select 앞구문이고

$sql_common 은
where 절 이하의 구문으로

결합되는 구조입니다.

제가 알려드린 쿼리는

질문에서 리스트에서 공지를 제외하고 페이징을 하고 싶으시다 하여
조건을 붙인겁니다.

total_count에서 정확한 조건이 되면 굳이 다르게 구할필요가 없죠

제가 드린건 원하시는 문에 적절하게 적용해서 사용하시라고 팁을 알려드린겁니다.

참고적인 내용이지 절대적인 적용점은 아닙니다.
구문을 원하시는 방향대로 변경하시다가 막힐때 참고하시는게 좋습니다.

위에서 언급한 $page_rows += $notice_count; 이게 어디서 나오는건지 생각해보니 bbs/list.php에서 아마도 소스가 이거겠죠?


// 공지글이 있으면 변수에 반영
if(!empty($notice_array)) {
    $from_record -= count($notice_array);
    if($from_record < 0)
        $from_record = 0;
    if($notice_count > 0)
        $page_rows -= $notice_count;
    if($page_rows < 0)
        $page_rows = $list_page_rows;
}

그럼 공지제외 10개로 원하기 때문에 원하는 건 아마도 이게 아닐까요? 


//    if($notice_count > 0)
//        $page_rows -= $notice_count;

만약 page_rows 가 3이면

1페이지에는 공지, 30,29,28 번째 게시물이 오구요
2페이지에는 28,27,26 게시물이 와버립니다;
3페이지는 25,24,23 게시물이 오구요

즉 2페이지만 1페이지의 공지 수 만큼 중복 출력됩니다;

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

회원로그인

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