코멘트 비밀글 문제 해결하려는데 생각좀 주세요^^ 정보
코멘트 비밀글 문제 해결하려는데 생각좀 주세요^^본문
(문제)
원글 : A ( 작성자)
코멘트 : B
답코멘트 : C (답코멘트를 비밀글로 체크)
원글을 쓴 A는 답코멘트 C를 볼 수 있습니다.
하지만 자신의 코멘트 밑에 달려있는 비밀코멘트를 B는 볼 수 없습니다.
아주 답답하고 황당한 일이죠. ㅠ..ㅠ...
이것을 해결해 보려는데 머리가 아프네요.
----
SQL 추가 실행 없이 해결하려면 이것은 원본을 수정해야 할 꺼 같아요.
/bbs/view_comment.php 에서 수정해야 되는 부분 입니다.
$list[$i][content] = $list[$i][content1]= "비밀글 입니다.";
if (!strstr($row[wr_option], "secret") ||
$is_admin ||
($write[mb_id]==$member[mb_id] && $member[mb_id]) ||
($row[mb_id]==$member[mb_id] && $member[mb_id])) {
$list[$i][content1] = $row[wr_content];
$list[$i][content] = conv_content($row[wr_content], 0, 'wr_content');
$list[$i][content] = search_font($stx, $list[$i][content]);
}
$row[wr_comment_reply] 의 글자수가 2 이상이면 count-1 갯수만큼의 문자열에 해당하는
wr_id를 찾고 (윗 코멘트) 그 코멘트의 사용자가 로그인 한 회원이면 비밀글로 감추지
않고 데이터를 넣어주는 것인데... 로직이 무지하게 어렵네요. ㅠ..ㅠ
원글 : A ( 작성자)
코멘트 : B
답코멘트 : C (답코멘트를 비밀글로 체크)
원글을 쓴 A는 답코멘트 C를 볼 수 있습니다.
하지만 자신의 코멘트 밑에 달려있는 비밀코멘트를 B는 볼 수 없습니다.
아주 답답하고 황당한 일이죠. ㅠ..ㅠ...
이것을 해결해 보려는데 머리가 아프네요.
----
SQL 추가 실행 없이 해결하려면 이것은 원본을 수정해야 할 꺼 같아요.
/bbs/view_comment.php 에서 수정해야 되는 부분 입니다.
$list[$i][content] = $list[$i][content1]= "비밀글 입니다.";
if (!strstr($row[wr_option], "secret") ||
$is_admin ||
($write[mb_id]==$member[mb_id] && $member[mb_id]) ||
($row[mb_id]==$member[mb_id] && $member[mb_id])) {
$list[$i][content1] = $row[wr_content];
$list[$i][content] = conv_content($row[wr_content], 0, 'wr_content');
$list[$i][content] = search_font($stx, $list[$i][content]);
}
$row[wr_comment_reply] 의 글자수가 2 이상이면 count-1 갯수만큼의 문자열에 해당하는
wr_id를 찾고 (윗 코멘트) 그 코멘트의 사용자가 로그인 한 회원이면 비밀글로 감추지
않고 데이터를 넣어주는 것인데... 로직이 무지하게 어렵네요. ㅠ..ㅠ
댓글 전체

^^ 정리해 보면
코멘트 1단계는 못 보고 2단계는 볼 수 있다는 건가요?
그렇다면 wr_comment_reply로 해결할 수 있지 않을까요?
요즘은 질문다운 질문이 드물어서.......
코멘트 1단계는 못 보고 2단계는 볼 수 있다는 건가요?
그렇다면 wr_comment_reply로 해결할 수 있지 않을까요?
요즘은 질문다운 질문이 드물어서.......
login id가 B인 경우 당연히 B가 쓴 코멘트를 볼 수 있죠?
그리고, C가 쓴 것은 비밀글이든 말든 볼 수 있어야 하는데
wr_comment_reply를 sql을 안돌리고 해결하려니 머리가...ㅠ.ㅠ
그리고, C가 쓴 것은 비밀글이든 말든 볼 수 있어야 하는데
wr_comment_reply를 sql을 안돌리고 해결하려니 머리가...ㅠ.ㅠ

아직도 전체 조건이 감이 안 잡히네요.

subquery나 connected by등
기능이 없는 sql로는 힘드니까
그냥 php에서 비밀글*"이렇게 출력하는 방법을 쓰시죠?
기능이 없는 sql로는 힘드니까
그냥 php에서 비밀글*"이렇게 출력하는 방법을 쓰시죠?

제가 예전에 이문제로 골머리를 앓던 부분 입니다.ㅜ.ㅡ
http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=8662
의 내용중 4번과 7-2 번 항목의 내용을 참고하시면 될런지 모르겠습니다.
http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=8662
의 내용중 4번과 7-2 번 항목의 내용을 참고하시면 될런지 모르겠습니다.
^^... 감사합니다.
이문제를 해결하려면 원본에서 원 코멘트 작성자의 id를 넣어둬야 편하겠네요.
이문제를 해결하려면 원본에서 원 코멘트 작성자의 id를 넣어둬야 편하겠네요.

아이디 가, 나, 다
가 있고
글 A(가), 코멘트 B(나), 댓글 코멘트 C(다)가 있습니다. 괄호 안은 글쓴이.
가 나 다
A o ?
B x
C o
가 있고
글 A(가), 코멘트 B(나), 댓글 코멘트 C(다)가 있습니다. 괄호 안은 글쓴이.
가 나 다
A o ?
B x
C o
(정답)
가 나 다
A o O O
B O O O
C o O O
(현재)
가 나 다
A o O O
B O O O
C o X O
B는 비밀글 아님, C는 비밀글
가 나 다
A o O O
B O O O
C o O O
(현재)
가 나 다
A o O O
B O O O
C o X O
B는 비밀글 아님, C는 비밀글

코멘트 댓글 트리에서 중간에 비밀글 노드가 생기면
그 노드 c_mb_id 와 바로 상우 노드 p_mb_id를 제외하고
이 비밀글 노드 이하를 안 나타나게 하려는 것인가요?
그 노드 c_mb_id 와 바로 상우 노드 p_mb_id를 제외하고
이 비밀글 노드 이하를 안 나타나게 하려는 것인가요?
헐랭이님은 심플하게 상위코멘트 작성자를 기록해 뒀다가
비밀코멘트의 상위코멘트 작성자가 글을 조회하면 해당 비밀글을 풀어주는 것 입니다.
저도 이 방법이 가장 간단한거 같다는 생각이구요.
비밀코멘트의 상위코멘트 작성자가 글을 조회하면 해당 비밀글을 풀어주는 것 입니다.
저도 이 방법이 가장 간단한거 같다는 생각이구요.
wr_parent,wr_comment,wr_comment_reply 이 필드값이 관련있을꺼 같네요
해결답이 아니라 지송...ㅡㅡ
해결답이 아니라 지송...ㅡㅡ

여기서 그누보드 고수분들 회의 중인건가요??

이렇게 수정하니깐 잘 나오네요.. 수정해보시고 리플 부탁합니다.
그리고 불당님 그누보드 튜닝적용된 상태면 wr_comment_reply 값은 빠져있습니다.
sql문에 wr_comment_reply값 추가로 넣어주시고 해야합니다.
// 만약 wr_comment_reply 가 공백이 아니라면(즉, 답코멘트라면)
// wr_comment값에 저장된 댓글번호의 원 작성자 mb_id를 구함
if($list[$i][wr_comment_reply] != '')
{
// $list[$i][wr_comment] 의 mb_id 구하기
$sql = "select mb_id from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 and wr_comment = '".$list[$i][wr_comment]."'";
$secret_id = sql_fetch($sql);
}
$list[$i][content] = $list[$i][content1]= "비밀글 입니다.";
if (!strstr($row[wr_option], "secret") ||
$is_admin ||
($write[mb_id]==$member[mb_id] && $member[mb_id]) ||
($row[mb_id]==$member[mb_id] && $member[mb_id]) || $secret_id[mb_id] == $member[mb_id]) {
$list[$i][content1] = $row[wr_content];
$list[$i][content] = conv_content($row[wr_content], 0, 'wr_content');
$list[$i][content] = search_font($stx, $list[$i][content]);
}
그리고 불당님 그누보드 튜닝적용된 상태면 wr_comment_reply 값은 빠져있습니다.
sql문에 wr_comment_reply값 추가로 넣어주시고 해야합니다.
// 만약 wr_comment_reply 가 공백이 아니라면(즉, 답코멘트라면)
// wr_comment값에 저장된 댓글번호의 원 작성자 mb_id를 구함
if($list[$i][wr_comment_reply] != '')
{
// $list[$i][wr_comment] 의 mb_id 구하기
$sql = "select mb_id from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 and wr_comment = '".$list[$i][wr_comment]."'";
$secret_id = sql_fetch($sql);
}
$list[$i][content] = $list[$i][content1]= "비밀글 입니다.";
if (!strstr($row[wr_option], "secret") ||
$is_admin ||
($write[mb_id]==$member[mb_id] && $member[mb_id]) ||
($row[mb_id]==$member[mb_id] && $member[mb_id]) || $secret_id[mb_id] == $member[mb_id]) {
$list[$i][content1] = $row[wr_content];
$list[$i][content] = conv_content($row[wr_content], 0, 'wr_content');
$list[$i][content] = search_font($stx, $list[$i][content]);
}

위의것으로 테스트해보니 댓글이 계속 달릴경우 다시 안나오게 되네요.
아래처럼 추가 수정했습니다.
if($list[$i][wr_comment_reply] != '')
{
// $list[$i][wr_comment] 의 mb_id 구하기
// A, AA, AAA, AAAA 등 답코멘트 위치값에 따라 한단계 위의 mb_id로 구하는것으로 변경
$wr_comment_position = substr($list[$i][wr_comment_reply],0,strlen($list[$i][wr_comment_reply])-1);
$sql = "select mb_id from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 and wr_comment = '".$list[$i][wr_comment]."' and wr_comment_reply = '".$wr_comment_position."'";
$secret_id = sql_fetch($sql);
}
아래처럼 추가 수정했습니다.
if($list[$i][wr_comment_reply] != '')
{
// $list[$i][wr_comment] 의 mb_id 구하기
// A, AA, AAA, AAAA 등 답코멘트 위치값에 따라 한단계 위의 mb_id로 구하는것으로 변경
$wr_comment_position = substr($list[$i][wr_comment_reply],0,strlen($list[$i][wr_comment_reply])-1);
$sql = "select mb_id from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 and wr_comment = '".$list[$i][wr_comment]."' and wr_comment_reply = '".$wr_comment_position."'";
$secret_id = sql_fetch($sql);
}
ㅠ..ㅠ...a... 결국 SQL을 한번이라도 돌려야 하는거죠?

엑스엠엘: 코멘트 댓글 트리에서 중간에 비밀글 코멘트(노드)가 생기면
그 노드(코멘트를 작성한) c_mb_id 와 바로 상위 노드 p_mb_id, 원글 작성한 o_mb_id 를 제외하고
다른 이가 로그인 했을 때 비밀글 노드 이하를 안 나타나게 하려는 것인가요?
o_mb_id랑 p_mb_id와 c_mb_id가 로그인하면 볼 수 있게하구요.
아빠불당: 헐랭이님은 심플하게 상위코멘트 작성자를 기록해 뒀다가
비밀코멘트의 상위코멘트 작성자가 글을 조회하면 해당 비밀글을 풀어주는 것 입니다.
저도 이 방법이 가장 간단한거 같다는 생각이구요.
제가 말한 규칙이 맞는 건가요?
그 노드(코멘트를 작성한) c_mb_id 와 바로 상위 노드 p_mb_id, 원글 작성한 o_mb_id 를 제외하고
다른 이가 로그인 했을 때 비밀글 노드 이하를 안 나타나게 하려는 것인가요?
o_mb_id랑 p_mb_id와 c_mb_id가 로그인하면 볼 수 있게하구요.
아빠불당: 헐랭이님은 심플하게 상위코멘트 작성자를 기록해 뒀다가
비밀코멘트의 상위코멘트 작성자가 글을 조회하면 해당 비밀글을 풀어주는 것 입니다.
저도 이 방법이 가장 간단한거 같다는 생각이구요.
제가 말한 규칙이 맞는 건가요?

팁에 올려두었는데 테스트 해보시고 피드백 부탁드립니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=15640
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=15640