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

게시판에서 수정버튼 클릭시 소스 내용(간단) 질문 채택완료

멋진남자임 10년 전 조회 4,513

게시판에서 수정버튼 클릭시 소스 내용 질문

 

위치 : bbs/write.php

 

} else if ($w == 'u') { // 수정 버튼 클릭했을때

- 생략 -

    // 원글만 구한다.    <= 질문1) 왜 원글만 구하는지???

    $sql = " select count(*) as cnt from {$write_table}

                where wr_reply like '{$reply}%'

                and wr_id <> '{$write['wr_id']}'  //  질문2) 원글만 구하는데, 왜 wr_id 와 $write['wr_id']가 서로 달라야하죠?

                and wr_num = '{$write['wr_num']}'

                and wr_is_comment = 0 ";

 

    $row = sql_fetch($sql);

    if ($row['cnt'] && !$is_admin) 

        alert('이 글과 관련된 답변글이 존재하므로 수정 할 수 없습니다.\\n\\n답변글이 있는 원글은 수정할 수 없습니다.');

 

    $sql = " select count(*) as cnt from {$write_table}  

                where wr_parent = '{$wr_id}'

                and mb_id <> '{$member['mb_id']}' // 질문3) 여기도 왜 mb_id 와 $member['mb_id'] 가 달라야 합니까?

                and wr_is_comment = 1 ";

    $row = sql_fetch($sql);

    

왜 멤버id 가 .. 멤버id가 아닌 조건으로 select 해야 합니까?

 

 

관련질문) http://sir.co.kr/qa/?wr_id=48873">http://sir.co.kr/qa/?wr_id=48873

위 관련질문에 ​잘살아보자님이 관련 답변을 해주셨는데... 제가 아무리 봐도 이해를 못하겠더라고요

 

원글에 코멘트가 있는지 없는지 알려면 자기 자신에 글을 제외를 해야 한다는 말씀은??? 


왜 코멘트가 있는지 없는지 알려면.. 자기 자신의 글을 제외를 해야 하는지??? 이해가??? 

 

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

답변 3개

채택된 답변
+20 포인트
10년 전

1. //원글만 구한다. 라는 의미는 답글이 달려 있는 원글은 수정에서 제외시키겠다는 의미입니다.

   원글wr_id와 답글의 wr_id는 다르기 때문에 원글이 아닌 답글을 찾을려면 조건으로 그렇게 줘야겠지요. 

 

2. 1번의 의미를 아시면 이해하기 쉬울 듯 합니다.

 

3. 수정하고자 하는 원글에 댓글쓴 회원과 원글쓴 회원 아이디가 다른 댓글이 달려 있으면

    그것도 관리자모드 > 게시판설정에 있는 댓글갯수에 따라 원글 수정불가로 처리하겠다는 의미입니다.  

 

P.S. 원글쓰시고 답글달고 다른 아이디로 댓글 달아 보시고 phpMyAdmin 등과 같은 관리프로그램으로

       해당 게시판 컬럼 내용을 보시면 이해가 쉬우실 겁니다 ㅎㅎ 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

멋진남자임
10년 전
1. //원글만 구한다. 라는 의미는 답글이 달려 있는 원글은 수정에서 제외시키겠다는 의미입니다.
==============================================================================
그러면.. 원글만 구한다=답변이 없는 원글만 구한다. 인가요?

원글wr_id와 답글의 wr_id는 다르기 때문에 원글이 아닌 답글을 찾을려면 조건으로 그렇게 줘야겠지요.
=================================================================
왜 원글이 아닌 답글을 찾으려면 원글wr_id와 답글의 wr_id가 달라야 하죠?
원글에 대한 wr_id와 답글의 wr_id 정의가 어떻게 되죠?
멋진남자임
10년 전
3. 수정하고자 하는 원글에 댓글쓴 회원과 원글쓴 회원 아이디가 다른 댓글이 달려 있으면
그것도 관리자모드 > 게시판설정에 있는 댓글갯수에 따라 원글 수정불가로 처리하겠다는 의미입니다.
===========================================================================
mb_id는 원글쓴 회원 아이디이고
$member['mb_id']는 댓글쓴 회원아이디 인가요?

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

10년 전

 

 

답변글이 있는것을 확인해서 (결국 원글 수정못하게) 하려는 것 아닌가요?

맞아요. 님께서 쓰신 내용이 정답이네요.

그렇지만 원글만 구한다 문구는 오해를 할 수 있겠지만 어떻게 보면 맞을수도 있고요.

댓글이나 답글이 달리지 아니한 원글만 찾는다는 것으로 이해를 한다면 말이죠.

'댓글이나 답글이 없는 원글을 찾는다' == '원글만 구한다'.

 

1. 답글이 달린 원글을 수정할 수 없게 할려면
왜 wr_id <> $write['wr_id'] 여야 해당 원글에 대한 답글을 찾을 수 있을까요?
 

 

댓글이나 답글을 카운터시에 현재 글-원글-이 포함되지 않기위해 하는것이고요. 

아무글도 없이 원글만 있다면 카운터는 값은 없고 글수정으로 넘어가겠죠.


2. wr_id 와  $write['wr_id'] 는 무엇을 의미하길래?
wr_id <> '{$write['wr_id']}'  => 원글이 아닌 답글 또는 댓글을 의미하는가요?

 

현재 수정을 요구하고 있는 글고유번호를 의미합니다. 댓글이나 답글의 구분이 없습니다.

3. wr_num와, '{$write['wr_num']}'은 뭐를 의미하기에
wr_num = '{$write['wr_num']}' => wr_num이 같고, 즉 같은 원글에 대한...답글이나 댓글이라는 것인지요?

 

게시판에 작성되는 글구분번호 입니다. 답글이나 댓글을 제외한 새글에만 부여되는 번호입니다.

-1로 시작해서 새글이 등록될때마다 하나씩 감소합니다.

 

4. 이런 변수들 정의되어있는 문서 같은것 어디 없습니까?  

아래 링크 문서를 보시면 이해가 쉬게 될것 같네요.​

http://gnuboard.org/read/그누보드/이해#글정렬방법" target="_self">그누보드4 이해하기 글정렬방법      

 

로그인 후 평가할 수 있습니다

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

10년 전
답글이 달린 원글을 수정할 수 없게 할려면

 

wr_id <> $write['wr_id'] 여야 해당 원글에 대한 답글을 찾을 수 있겠죠.

위 쿼리문은 답글의 갯수를 구하는 것이죠.

 

답글의 갯수를 구할 수 있게 되면 "이 글과 관련된 답변글이 존재하므로 수정 할 수 없습니다."라는

경고메시지를 보이잖아요? ㅎㅎ 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

네이비칼라
10년 전
그리고 해당 테이블의 컬럼명 wr_id와 $write['wr_id']는 다릅니다.
wr_id는 자동으로 1씩 증가하게 되어 있는 것이고 $write['wr_id']는 db에 wr_parent로 들어 가는 것으로 알고 있습니다. 수정할 때를 얘기하고 있습니다.
멋진남자임
10년 전
아래 쿼리는 답글의 갯수를 구하는 것인가요?
주석에는 원글만 구한다고 써있던데요??? ..

혹시 주석에 있는 원글이라는 것은... 원래 글을 말하나요? 답변글의 본문을 말하나요?
주석에 원글만 구한다는 말이... 제가 알고 있는 원글이 아닌가봐요?

// 원글만 구한다.
$sql = " select count(*) as cnt from {$write_table}
where wr_reply like '{$reply}%'
and wr_id <> '{$write['wr_id']}'
and wr_num = '{$write['wr_num']}'
and wr_is_comment = 0 ";
네이비칼라
10년 전
wr_is_comment = 0 =>댓글이 아니고,
wr_num = '{$write['wr_num']}' => wr_num이 같고, 즉 같은 원글에 대한...답글이나 댓글이어야 하고, 여기서는 답글,
wr_id <> '{$write['wr_id']}' => 원글이 아닌 답글 또는 댓글,,,여기서는 답글이어야 하고
wr_reply like '{$reply}%' => 원글에 답글이든 답글에 답글이든

이런 조건을 만족하는 레코드(rows)의 갯수를 구하라.

//원글만 구한다 => 여기서 원글만 구한다는 것은 답글이 달린 원글은 수정할 수 없으므로
만일 위 쿼리에 결과가 NULL값이 아니라면 즉, 답글이 있다면...경고메시지

만약, 답글이 있어도 원글 수정이 가능할려면 위 쿼리문이 필요가 없겠지요.
멋진남자임
10년 전
그니까.. 원글을 구하려는게 아니라..
답변글이 있는여부를 확인하는거 아닌가요?
답변글이 있는것을 확인해서 (결국 원글 수정못하게) 하려는 것 아닌가요?

답변글이 있는것을 확인려는데... ..주석에는 원글만 구한다고 써있는 이유가???

// 원글만 구한다.
$sql = " select count(*) as cnt from {$write_table}
where wr_reply like '{$reply}%'
and wr_id <> '{$write['wr_id']}'
and wr_num = '{$write['wr_num']}'
and wr_is_comment = 0 ";
멋진남자임
10년 전
감사합니다 덕분에 이제 이해가 되었습니다.

답변글도 원글에 속하는가보군요... 아.. 이 사실을 몰라서
무척 햇갈렸습니다

미리 알려주셨다면 더 좋았을것 같네요^^

덕분에 풀렸습니다 감사합니다.

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

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

로그인