테스트 사이트 - 개발 중인 베타 버전입니다

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

· 6년 전 · 6324 · 20

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

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

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

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 게시판을 만들 수 있으니

좋지 아니한가 싶습니다.

 

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

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

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

 

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

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 20개

6년 전
공유 감사드립니다!
감사합니다
관리자는 글 번호가 1, 2, 3, 4, 제대로 나타나는데
관리자가 아닌 글쓴이는 글 번호가 0, -1, 2, -3, 이런식으로 나타납니다.
저만 그런가요? 다른분들은 말씀이 없으시네요..

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

관리자는 글번호, 페이징 정상적으로 작동되는데
관리자가 아닌 글쓴이의 글번호, 페이징이 문제인것 같네요..
5년 전
저도 그러네요
페이징 쪽이 잘못 되어서 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' ";
이지 않을까 싶습니다.
5년 전
수고하십니다. 위처럼 바꾸어보니, 일반회원은 0부터 카운트가 잡히고, 관리자로그인 시 2 1 0 -1 -2 -3 이런식으로 카운트가 잡히네요....
5년 전
이걸 특정레벨도 전체열람이 가능하도록 할 수 있는지요?
고수님의 도움을 기다리겠습니다.
5년 전
좋은 정보 입니다. 감사합니다.
5년 전
정말 감사합니다.
수정하면
게시판 상단에 이게 뜨는 이유가 뭘까요??


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

게시글 목록

번호 제목
23966
23963
23953
23949
23938
23935
23933
23928
23919
23918
23917
23910
23902
23901
23897
23894
23893
23891
23885
23872
23870
23862
23859
23853
23845
23838
23827
23819
23805
23801