1:1 게시판에서 사용할 수 있는, 작성자 본인글만 볼 수 있는 쿼리입니다. > 그누보드5 팁자료실

그누보드5 팁자료실

1:1 게시판에서 사용할 수 있는, 작성자 본인글만 볼 수 있는 쿼리입니다. 정보

1:1 게시판에서 사용할 수 있는, 작성자 본인글만 볼 수 있는 쿼리입니다.

본문

질답을 많이 찾아봐도 한눈에 볼 수 있도록 정리된 명쾌한 내용이 없더라고요..

스킨에서 적용한는건 페이징과 게시물 카운트에 문제가 있고요,

스킨에 카운트 쿼리를 넣으면 비효율적일 것 같고 해서

bbs/list.php 에서 처리가능하도록 종합해서 올려봅니다.


50라인 부근

 

$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";

이 부분 바로 하단에

 

$sql_search .= " and mb_id = '{$member[mb_id]}' "; // 본인 글만 카운트

이놈 추가

 

62라인

 

// 원본

// $sql_search = "";

// $total_count = $board['bo_count_write'];

 

이 부분을 아래 문구와 교체

 

// 본인 글만 카운트

$sql_search = " mb_id = '{$member[mb_id]}' ";

$sql = " SELECT COUNT * AS `cnt` FROM {$write_table} WHERE {$sql_search} ";

$row = sql_fetch($sql);

$total_count = $row['cnt'];

 

 

169라인 부근에

 

if ($is_search_bbs) {

$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";

} else {

 

이곳 바로 하단에

 

// 원본

// $sql = " select * from {$write_table} where wr_is_comment = 0 ";

// if(!empty($notice_array))

// $sql .= " and wr_id not in (".implode(', ', $notice_array).") ";

// $sql .= " {$sql_order} limit {$from_record}, $page_rows ";

// }

 

이 부분을

// 본인 글만 보이기 수정

$sql_search= " and mb_id = '{$member[mb_id]}' ";

$sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_search} ";

if(!empty($notice_array))

$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";

$sql .= " {$sql_order} limit {$from_record}, $page_rows ";

}

 

여기까지 하면 리스트와 카운트, 페이징 모두 잡힙니다,

게시판 전체글 보기부터 분류에 이르기까지, 아마도,

 

다만 당연히 bbs/list.php 수정이라서 모든 게시판에 일괄 적용이 되고

이대로는 관리자도 다른 회원의 글을 볼 수가 없으니

 

if($bo_table == "게시판이름" && !$is_admin) { // 관리자를 제외하고 특정게시판에 본인글만 보이기

이런 식으로 조건문 사용해서 원본 소스는 살려주셔야 되겠죠.

 

이렇게 하면 게시판만 지정해주면 뭔 스킨으로든 1;1 게시판을 만들 수 있으니

좋지 아니한가 싶습니다.

 

여기서 도움 주시는 뛰어난 분들께 많이 도움 받으면서 공부하고 있는데

도움 주시는 것만 낼름 받아먹기만 할 수가 없어서

미세먼지팁이라도 정리해서 올려봅니다.

 

제가 원래 쿼리쪽은 까막눈이나 다름없어서 혹시 문제될 수 있는 부분이 있다면 말씀주세요.

추천
11

댓글 20개

if($bo_table == "게시판이름" && !$is_admin) { // 관리자를 제외하고 특정게시판에 본인글만 보이기
이걸 어디에다가 넣어야하나요? 이렇게 할경우에는 모든게시판이 1:1처럼 변경되지않을까요?
1개게시판만 변경을 못하나요?
소스를 교체하는 경우는


if($bo_table == "게시판이름" && !$is_admin) { // 관리자를 제외하고 특정게시판에 본인글만 보이기

교체 소스

} else {

원본 소스

}


와 같이 적용하시면 되고 소스를 추가하는 경우에는


if($bo_table == "게시판이름" && !$is_admin) { // 관리자를 제외하고 특정게시판에 본인글만 보이기

추가 소스

}


이렇게만 수정해주시면 게시판이름 안에 넣은 게시판만 적용될거에요
관리자는 글 번호가 1, 2, 3, 4, 제대로 나타나는데
관리자가 아닌 글쓴이는 글 번호가 0, -1, 2, -3, 이런식으로 나타납니다.
저만 그런가요? 다른분들은 말씀이 없으시네요..

그리고 글이 많아질 경우 관리자는 페이징 기능이 정상적으로 작동하는데
이 역시 관리자가 아닌 글쓴이는 페이징 기능이 작동하지 않는것 같습니다.

관리자는 글번호, 페이징 정상적으로 작동되는데
관리자가 아닌 글쓴이의 글번호, 페이징이 문제인것 같네요..
페이징 쪽이 잘못 되어서 0, -1, 2, -3, 나오시면
$sql = " SELECT COUNT * AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
를 아래로 바꾸시면 됩니다.
$sql = " SELECT COUNT(*) AS cnt FROM {$write_table} WHERE {$sql_search} "; 
그리고 자세히 안봤는데
$sql = " SELECT COUNT(*) AS cnt FROM {$write_table} WHERE {$sql_search} and wr_is_comment = '0' ";
이지 않을까 싶습니다.
수고하십니다. 위처럼 바꾸어보니, 일반회원은 0부터 카운트가 잡히고, 관리자로그인 시  2 1 0 -1 -2 -3  이런식으로 카운트가 잡히네요....
수정하면
게시판 상단에 이게 뜨는 이유가 뭘까요??


Warning: Use of undefined constant mb_id - assumed 'mb_id' (this will throw an Error in a future version of PHP) in /www_root/bbs/list.php on line 65

Warning: Use of undefined constant mb_id - assumed 'mb_id' (this will throw an Error in a future version of PHP) in /www_root/bbs/list.php on line 181
전체 2,424 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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