root님의 "관리자와 글작성자만 글을 볼수있게하는 스킨(마이페이지v2)"에서.... > 그누4 질문답변

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

root님의 "관리자와 글작성자만 글을 볼수있게하는 스킨(마이페이지v2)"에서.... 정보

root님의 "관리자와 글작성자만 글을 볼수있게하는 스킨(마이페이지v2)"에서....

본문

write_update.skin.php 파일에서 공지사항이 아닌 새글,답변은 최근게시물에서 삭제를 합니다.
코멘트까지 삭제를 하려면 어떻게 해야 할까요?
요즘은 도통 머리가 안돌아 갑니다. ㅠ.ㅠ

================  write_update.skin.php 소스 ======================

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.
if($w == '' && !$notice || $w == 'r') {  // 공지사항이 아닌 새글,답변은 최근게시물에서 삭제한다 
    sql_query(" delete from $g4[board_new_table] where wr_id = '$wr_id' ");
}
?>

=======================================================================

댓글 전체

검토하지 않은 막무가내 답변....ㅎㅎㅎ

sql_query(" delete from $g4[board_new_table] where wr_parent = '$wr_id' ");

일듯 싶습니다....

테이블은 지정해 주십시오...해당게시판 하고 최근게시물게시판 하고
감사합니다.
말씀하신 답변을 적용해 보았는데 안되더군요.
죄송하지만 검토가 필요할 듯 합니다. ^^*
어줍잖은 제 짜집기 노하우가 바닥을 드러내는것 같습니다.
확실한건 제가 모든걸 다 까먹었다는 사실입니다. ㅠ.ㅠ
최근게시물에서만 삭제되면 됩니다.
해당게시판에서는 달려 있어야 하구요.
제 홈페이지 메인을 보시면 제가 의도하는걸 쉽게 파악하실 겁니다.
sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and wr_is_comment = '1' and  wr_parent = '$write[wr_id]' ");

하면 될것 같습니다만.....

아마도 제가 처음 답변한 것에서 게시판($bo_table)이 지정되지 않아서 발생한 것일 수도 있습니다....
여전히 코멘트는 삭제가 안됩니다.
그리고 새로운 글을 작성하면 아래와 같은 에러메세지가 뜹니다.

delete from g4_board_new where bo_table = 'cp' and wr_is_comment = '1' and wr_parent = ''

1054 : Unknown column 'wr_is_comment' in 'where clause'

error file : /bbs/write_update.php
죄송합니다...최근게시물테이블에는 wr_is_comment 필드가 없다는 얘기네요....잠시만용....

sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and  wr_parent = '$write[wr_id]' ");
sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and  wr_parent = '$write[wr_id]' ");

가르쳐 주신 위 소스를 적용해 보니 새글에서는 문제가 없는데 여전히 코멘트 삭제는 안됩니다.
이거 야심한 밤에 노고를 하시게 만드는군요.
이기회에 또 하나 배우지요.....ㅎㅎㅎ

여기서 질문하나 드립니다........

어떤 상황에서 삭제가 안되신다는 것인지요?....

혹 글수정?....아니면....기존 작성글인지요? ....
여러개의 특정게시판(A게시판, B게시판)에서 작성된 글과 코멘트는 최근게시물(new.php)에 안나오게 하고 싶습니다.
그게 새로운 글과 코멘트의 작성이든 수정이든 상관없이요.
물론 게시판관리자에서 검색사용안함을 하면 되지만 검색은 되어야 하거든요.
그래서 root님의 스킨을 이용하려고 했는데 막혀서 삽질을 했는데 안되네요.
맨 아래 답변을 한번 참고하시면 될듯 합니다....

글작성시/수정시/코멘트쓰기/코멘트수정/답변등  $w 값이 잘 정해 주어야 합니다....
아마도 기존 글에도 적용하시려나 봅니다...
그러면 요것도 바꾸어 주셔야 지요~~~~

if($w == '' && !$notice || $w == 'r') {  // 공지사항이 아닌 새글,답변은 최근게시물에서 삭제한다

-->

if($w == '' && !$notice || $w == 'r' || $w=='u') {  // 공지사항이 아닌 새글,답변은 최근게시물에서 삭제한다

수정일때도 지워라....
정확히 구현하시려는 것을 이해하지는 못하지만 write_update.skin.php에서의 상황만 볼때 삭제가 어느 상황에서 이루어 지느냐에 따라서 틀립니다.

필요시 삭제루틴을 해당 스킨에서 write_comment_update.skin.php스킨으로 하나 더 작성하셔서 올려 보세요

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.
if($w == 'c' || $w == 'cu') { 
    sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and  wr_parent = '$wr_id' ");
}
?>
안그래도 write_comment_update.skin.php 이놈을 어떻게 사용해봐야 겠다는 생각에 짜집기 중입니다.
어떻게든 결판은 나겠지요.
늦은밤까지 같이 고민해 주셔서 감사합니다.
편안한 밤 보내시고 즐거운 한주 맞이하시기 바랍니다.
고맙습니다.
바로 위에 드린 답변 참조하시고 안된다면 쿼리문 끝의 $wr_id 부분일듯 합니다.....

아마도 잘 될듯 싶습니다...

참고로 write_comment_update.skin.php 에서는 $w == 'c' || $w == 'cu' 만쓰시는 것 아시죠?.....ㅎㅎㅎ

성공하십시오~~~`
쿼리를 두 번 날려야게네요. subquery가 지원된다면 한 방에......

select bn_id from g4_board_new N, #bo_table# B where N.bo_table=#bo_table_id# and N.wr_id=B.wr_id and B.wr_comment =1

이렇게 가져 온 것을 $bn_idstr= ( N1, N2, N3, N4, ... , Nn)으로 만들어서

delete from g4_board_new bn_id in $bn_idstr

이정도면 되지 않을까요?

subquery가 된다면

delete from g4_board_new bn_id in (select bn_id from g4_board_new N, #bo_table# B where N.bo_table=#bo_table_id# and N.wr_id=B.wr_id and B.wr_comment =1 )
코멘트를 지운다는 것으로 잘봇 보고...
다시 적습니다.

delete from $g4[board_new_table] where bo_table = '$bo_table'
and wr_id NOT IN ( 공지글 번호)

공지글 번호는
select bo_notice from g4_board where bo_table = '$bo_table'
bo_notice를 ( N1, N2, N3, N4, ... , Nn)로 만드시면 됩니다.
고수님들의 수준높은 담론에서 눈동냥 푸짐하게 하였습니다.
무슨말인지 아직 알아 듣지 못하는 제 수준이 안타깝지만
참 보기 좋은 그림입니다.^^
write_update.skin.php
write_comment_update.skin.php 둘다 아래처럼 해 보시지요~~~~~~!!

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.

    sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' ");

?>
write.php에서
write.skin.php를 먼저 부른다면 일이 좀 쉽겠습니다.

들어 오는 글이 코멘트라면 write.php에서 디비 수행 작업을 안 하고 빠지게 한두 줄 적으면 되는데
이 순서가 바뀌었으면 좋을 텐데요.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.
if($w == '' && !$notice || $w == 'r' || $w == 'c' ) {  // 코멘트 추가
    sql_query(" delete from $g4[board_new_table] where wr_id = '$wr_id' ");
}
?>
write_update.php와 write_update.skin.php 에는 $w == 'c' 와k $w == 'cu' 부분이 존재하지 않습니다.

이 부분은 write_comment_update.php 와 write_comment_update.skin.php 에서 제어 하셔야 합니다....
에공...점점 더 미궁으로 빠져듭니다......ㅠㅠ

1. 문 : 특정게시판에 글작성시 최근게시물에는 나타내고 싶지 않습니다...
    답 : 검색 사용을 해제 하십시오~~~~!

2. 문 : 검색은 써야 하는데용?.....
    답 : 그러면 해당 스킨의 업데이트에서 wr_parent로 지워주세요.......

3. 문 : 새글과 삭제는 되는데 코멘트는 삭제가 안됩니다.
    답 : wr_is_comment를 넣어 보시지요.....

4. 문 : 에러가 납니다..
    답 : 죄송합니다. 최근게시물테이블에는 해당 필드가 존재 하지를 않습니다.

5. 문 : 에공 힘듭니다.. 연구를 좀 더 해야겠습니다.
    답 : 1) 글작성 구도가 write.skin.php ->bbs/write_update.php ->write_update.skin.php 이니까
              write_update.skin.php에다가 아래처럼 하십시오~~~~(원글과 답변글만 적용됩니다.)
      <?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.

    sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' ");

?>

    2)코멘트 작성시는 view_comment.skin.php -> bbs/write_comment_update.php ->write_comment_update.skin.php 순이니 write_comment_update.skin.php에 한번 더 넣으십시오~~~~!

    <?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.

    sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' ");

?>



*** 이글 작성시까지 답변 못드린 부분...공지글은 제외하시려면 write_update.skin.php에 해당 구문을 첨가하십시오. 또한 write_comment_update.skin.php 에는 뒤에 해당 wr_id로 제어하는 문을 추가하십시오(write_update.skin.php도마찬가지임.)
write_update.php( write_commen_update.php)에서 new_table에 insert한 걸 지워야 하니까
wr_id가 추가 되어야 하지 않나요?


write_comment_update.skin.php에는

  sql_query(" delete from $g4[board_new_table] where bo_table = '$bo_table' and wr_id=$wr_id ");


write_update.skin.php에는 원래 것을

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.
if($w == '' && !$notice || $w == 'r') {  // 공지사항이 아닌 새글,답변은 최근게시물에서 삭제한다 
    sql_query(" delete from $g4[board_new_table] where wr_id = '$wr_id' ");
}
?>
조건 걸어서 하드코딩을 스킨에다가...
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=4606

충분히 응용하시리라 믿어 의심치 않습니다.
'까만도둑'님께서 원본경로(/bbs/)에 직접 접근하시는 것이...
아무래도 '까만도둑'님이 아니신 듯 합니다.
아니라면...
너무나 오랫동안 공백기를 두셨기 때문에
다소 감각이 무뎌지신 듯 합니다.
==>감사합니다.
말씀하신 답변을 적용해 보았는데 안되더군요.
죄송하지만 검토가 필요할 듯 합니다. ^^*
어줍잖은 제 짜집기 노하우가 바닥을 드러내는것 같습니다.
확실한건 제가 모든걸 다 까먹었다는 사실입니다. ㅠ.ㅠ

뭘 좋은걸 드셨는지 다 까먹으셔(?) 답니당....^^


==>>>>>>>까만도둑'님께서 원본경로(/bbs/)에 직접 접근하시는 것이...

아마도 원본 말씀은 없으셨습니다....업데이트스킨와 코멘트 업데이트 스킨에서 해결 하실듯 합니다....
-. 참조 및 검토가 필요한 영역 : /bbs/write_comment_update.php 최하단 부위.

// 사용자 코드 실행
@include_once("$board_skin_path/write_comment_update.skin.php");

사실 최근의 배포버전에서는 write_comment_update.skin.php 파일이 삭제가 되었지요.
(이 부분은 HISTORY를 참조하시기 바랍니다.)

여전히 최신 배포버전에서 관련 오류(논리 및 구조적 오류 포함)가 제거되지 않고 있습니다.
==>> 실제로 적용 및 고려되지 않는 소스코드의 잔존.

굳이 현재까지의 /bbs/write_comment_update.php라고 가정한다면,
코멘트 스킨을 생성시켜 write_update.skin.php의 형태처럼 적용하시면 됩니다.

물론, 포함될 소스코드는 'rolo'님께서 말씀하신 형태의 조건문이 포함되면 가능하리라 여겨집니다.

단, 원본경로의 소스파일을 수정하지 않는다는 조건이 붙어야 하므로,

스킨경로에서 처리하기 위해서는 원본경로의 상당부분 구문을 끌어와야 하며,

경우에 따라서는 곧바로 처리하는 것이 아니라 한두단계 또는 그 이상의 단계를

상당히 돌아가야 한다는 부분을 고려해야 할 것 같습니다.

(이미 '쌍둥이 게시판'관련 아이디어를 접하셨다면 짐작하시리라 여겨집니다.)
이제 사무실 들어와 확인해 보니 이렇게나 많은 글들이......
출근하자마자 하루 종일 외근을 다녀와 접속을 못했습니다.
집에가서 다시 한번 검토해 보겠습니다.
관심가져 주시는 여러 고수님들께 미리 감사 인사 드립니다.
해결했습니다.
검색 부족이었습니다.
root님께서 이미 10개월전에 답을 올려 두셨더군요.

http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=605

관심가져 주신 회원님들께 감사드립니다.
전체 114 |RSS
그누4 질문답변 내용 검색
  • 개별 목록 구성 번호 제목 작성자 작성일 조회
  • 게시물이 없습니다.

회원로그인

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