채택완료

sql 쿼리 관련 질문합니다.

2022-06-03 (금) 12:12:46 1,648

보기 싫은 댓글 차단하는 코딩중에서, 내가 차단한 댓글만 안보이게 하기.

오류 : 차단버튼 누를 경우 다른사람이 차단한것까지 같이 차단되어 보이는 오류...

A라는 게시글에 b댓글 c댓글이 달렸을때.

d라는사람이 b댓글 차단

e라는 사람이 c댓글 차단 하면.

d라는 사람이 b와 c 모두 차단되어 보여짐.. b만 안보여야 함..

e도 마찬가지. b와 c 모두 차단되어 보여짐. c만 안보여야함..

조건을 어떻게 해야할지 매우 고민입니다 ㅠㅠ

---------------------------------------------------------------------------------------------

$sql = "SELECT * FROM {$g5['apms_shingo']} WHERE mb_id='{$member['mb_id']}' and wr_parent = '{$view['wr_id']}'";

 $result_id = sql_fetch($sql);

if($is_member) { // 회원일때

            if($member['mb_id']==$result_id['mb_id'] && $result_id['wr_parent'] == $view['wr_id']){

            $shingo_txt = '<p><b>블라인드 처리된 댓글입니다.</b></p>';

            $is_cmt_shingo = true;

            $row['wr_content'] = ''; // 글내용 지움

            }

|

답변 3개 / 댓글 4개

채택된 답변
+20 포인트

id 컬럼을 주셔서 해당 id로 매칭되게 작업을 해주셔야할 것 같습니다

댓글도 게시글과 동일하게 wr_id가 고유적으로 부여가 됩니다.

게시글을 신고할때 insert 문이 어떻게 될지는 모르겠지만 굳이 wr_id가 insert가 된다면 wr_parent로 찾을 필요는 없을것 같습니다.

그리고 bo_table 값도 저장 되야 하구요.

view_commnet.skin에서 작업을 해야하는데 거기서 변수는 $view가 아니고 for문 안에 $list이고

view_comment.skin  for 문 안에
 

<?php

$sql = "SELECT * FROM {$g5['apms_shingo']} WHERE bo_table = '{$bo_table}'  and mb_id='{$member['mb_id']}' and wr_id = '{$list[$i]['wr_id']}'";

$result_id = sql_fetch($sql);

if($is_member) { // 회원일때

if($result_id){
    ?>
    이렇게 해도 되지 않을까 싶네요.

2022-06-03 (금) 12:22:21

차단 조치(표시)를 어떻게 한 건가요?

답변에 대한 댓글 4개

해당 소스를 적용할 경우.

댓글에
블라인드 처리된 댓글입니다. 이렇게 표시 됩니다.

d와 e라는 사람을 구분지어야 하는데..모르겟네요 ㅠㅠ
어떤 DB 테이블
어떤 컬럼에
어떤 값을 넣어서, 일반 댓글과 구분하게 하셨나요?
1. 일단 회원일때와 비회원일때 // 구분을 주었구요.
2. 그전에 기존에 있는 apms_shingo 신고 관련 테이블로 가서, 현재 접속되어 있는 $member['mb_id'] // 접속되어 있는 아이디 그리고 차단버튼(신고)를 누른 아이디를 찾아서 mb_id
로 일치하는지 비교를 했습니다.

3. wr_parent 해당 게시판 번호와 $view['wr_id'] // 현재 보고 있는 게시판 번호 가 일치하는지
비교를 했습니다.

둘다 맞을 경우 블라인드 처리로 적용을 했습니다.

apms_shingo (신고테이블) _ 댓글일때

bo_table
wr_id // 댓글 번호
wr_parent // 게시글 번호
mb_id // 아이디


신고테이블 wr_id 와 해당 게시판 테이블 wr_id 가 같을때 블라인드 처리로도
헤보았으나 같은 상황입니다..
1. 일단 회원일때와 비회원일때 // 구분을 주었구요.

==> 회원일 때만 차단한 댓글 안 보이기" 기능이 동작하는 건가요?

댓글-loop( $list) {

if($is_member) { // 회원일때


$sql = "SELECT count(*) cnt FROM {$g5['apms_shingo']} WHERE mb_id='{$member['mb_id']}' and wr_parent = '{$list['wr_id']}'";

$result_id = sql_fetch($sql);

if( $result_id['cnt'] > 0) {
$shingo_txt = '<p><b>블라인드 처리된 댓글입니다.</b></p>';
$is_cmt_shingo = true;
$row['wr_content'] = ''; // 글내용 지움
} else {
//$shingo_txt = '';
$is_cmt_shingo = false;
//$row['wr_content'] = ''; // 글내용 지움
}

} // if( 회원)

댓글 출력...

} //댓글-loop()



이런 식으로 하면 될 듯한데 비효율적입니다.

bbs/view_comment.php에서 처리해야 깔끄합니다.

답변을 작성하려면 로그인이 필요합니다.