게시판글등록시 타사이트 게시판에도 동시에 글을 올릴려고 합니다. 정보
게시판글등록시 타사이트 게시판에도 동시에 글을 올릴려고 합니다.본문
같은서버 디비명이 틀린 타사이트의 특정게시판에
아래와 같이 write_update.skin.php를 작성해서 동시에 글을 올리는데 성공은 하였습니다.
그런데 문제는 원게시판에서 내용을 수정하면 타사이트에도 수정이 되야 하는데
수정된 내용으로 타사이트에 다시 글이 등록이 됩니다.(원본과 수정된글 2개로 중복글 생성)
원게시판에서 원본을 수정시 타 사이트에 글이 새로 등록되지 않고 수정 하려면 아래의 소스를 어떻게 수정해야 하는지 고수님의 도움을 부탁드립니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$target_table= "g4_write_free"; //글 등록할 타사이트 게시판명
if($w=="") {
$db1=mysql_connect("localhost","디비명","비번");
mysql_select_db("디비명",$db1);
$sql11 = " insert into $target_table
set wr_num = '$wr_num',
wr_reply = '$wr_reply',
wr_comment = 0,
ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_trackback = '$wr_trackback',
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
mb_id = '$member[mb_id]',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '$g4[time_ymdhis]',
wr_ip = '$_SERVER[REMOTE_ADDR]',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
$sql12 = "update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$target_table'";
mysql_query($sql11,$db1);
mysql_query($sql12,$db1);
}
else if($w=="u") {
$db1=mysql_connect("localhost","디비명","비번");
mysql_select_db("디비명",$db1);
$sql11 = " update $target_table
set ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
mb_id = '$mb_id',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10= '$wr_10'
$sql_ip
$sql_password
where wr_id = '$wr[wr_id]' ";
mysql_query($sql11,$db1);
}
?>
아래와 같이 write_update.skin.php를 작성해서 동시에 글을 올리는데 성공은 하였습니다.
그런데 문제는 원게시판에서 내용을 수정하면 타사이트에도 수정이 되야 하는데
수정된 내용으로 타사이트에 다시 글이 등록이 됩니다.(원본과 수정된글 2개로 중복글 생성)
원게시판에서 원본을 수정시 타 사이트에 글이 새로 등록되지 않고 수정 하려면 아래의 소스를 어떻게 수정해야 하는지 고수님의 도움을 부탁드립니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$target_table= "g4_write_free"; //글 등록할 타사이트 게시판명
if($w=="") {
$db1=mysql_connect("localhost","디비명","비번");
mysql_select_db("디비명",$db1);
$sql11 = " insert into $target_table
set wr_num = '$wr_num',
wr_reply = '$wr_reply',
wr_comment = 0,
ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_trackback = '$wr_trackback',
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
mb_id = '$member[mb_id]',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '$g4[time_ymdhis]',
wr_ip = '$_SERVER[REMOTE_ADDR]',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
$sql12 = "update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$target_table'";
mysql_query($sql11,$db1);
mysql_query($sql12,$db1);
}
else if($w=="u") {
$db1=mysql_connect("localhost","디비명","비번");
mysql_select_db("디비명",$db1);
$sql11 = " update $target_table
set ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
mb_id = '$mb_id',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10= '$wr_10'
$sql_ip
$sql_password
where wr_id = '$wr[wr_id]' ";
mysql_query($sql11,$db1);
}
?>
댓글 전체
업데이트 부분에서 타 사이트에도 업데이트 쿼리를 날려야하지 않나요?
잘모르겠는데 어떻게 해야 할까요?
$wr[wr_id] 가 어디서 뽑아오는지 모르겠지만
인서트같은 경우는 그냥 자동으로 인덱스가 부여되지만,
업데이트는 그쪽 데이터베이스에 들어있는 인덱스를 알아야 겠지요?
물론 양쪽 다 깨끗한 상태에서 동시에 쌍둥이처럼 관리된다면
$wr[wr_id] => $wr_id로 고치시는걸로 해결될듯 하구요.
그게 아니시라면 첫번째 게시판필드에 두번째 게시판의 인덱스를 저장해 두시던가 해야할꺼 같습니다.
그냥 $wr_id 로 고치고 해보셔도 되겠지만, 두번째 게시판에 따로 누가 글쓴다거나 하는일이 생길수 있다면 인덱스가 꼬여버릴껍니다.
인서트같은 경우는 그냥 자동으로 인덱스가 부여되지만,
업데이트는 그쪽 데이터베이스에 들어있는 인덱스를 알아야 겠지요?
물론 양쪽 다 깨끗한 상태에서 동시에 쌍둥이처럼 관리된다면
$wr[wr_id] => $wr_id로 고치시는걸로 해결될듯 하구요.
그게 아니시라면 첫번째 게시판필드에 두번째 게시판의 인덱스를 저장해 두시던가 해야할꺼 같습니다.
그냥 $wr_id 로 고치고 해보셔도 되겠지만, 두번째 게시판에 따로 누가 글쓴다거나 하는일이 생길수 있다면 인덱스가 꼬여버릴껍니다.
$wr_id로 고쳐서 바로 해결하였습니다. 감사드립니다.
님의 말대로 두번째 게시판에 누가 글을 쓰면 중간에 글이 끼여버리네요.
첫번째, 두번째 게시판이 관리자 전용게시판이라 문제는 없는데요..
만약 위 문제를 해결하려면 쵸코님께서 두번째 게시판의 인덱스를 저장해
두라고 하였는데
이것은 어찌해야 하는지 궁금합니다.
님의 말대로 두번째 게시판에 누가 글을 쓰면 중간에 글이 끼여버리네요.
첫번째, 두번째 게시판이 관리자 전용게시판이라 문제는 없는데요..
만약 위 문제를 해결하려면 쵸코님께서 두번째 게시판의 인덱스를 저장해
두라고 하였는데
이것은 어찌해야 하는지 궁금합니다.
게시판 B에
wr_1~wr_10 중에 안쓰는곳이 있을껍니다.
새글 입력할때
적당한곳의 값을 $wr_id (A게시판의 인덱스) 로 저장해 줍니다. 예를 들어 wr_1 에 저장했다치면
이후 수정할때
wr_id='$wr_id' 대신
wr_1='$wr_id' 로 조건을 줘서 업데이트 해주시면 되겠죠
물론 인덱스가 아니라서 속도 차이가 약간 있겠습니다. 체감할만큼은 아니겠지만...
정석은 mysql_insert_id() -B게시판의 인덱스 를 A게시판에 넣어야 맞지만
그럴려면 다시 A쪽 디비에 다시 접속해야 하므로 복잡해집니다.
그냥 B에 A의 인덱스를 너셔도 그렇게 안느릴껍니다.
제일 좋은것은 쌍둥이 처럼 관리 하는것이고
차선은 A에 B의 인덱스를 보관
그다음은 B에 A의 인덱스를 보관
순으로 속도차이가 있겠습니다.
wr_1~wr_10 중에 안쓰는곳이 있을껍니다.
새글 입력할때
적당한곳의 값을 $wr_id (A게시판의 인덱스) 로 저장해 줍니다. 예를 들어 wr_1 에 저장했다치면
이후 수정할때
wr_id='$wr_id' 대신
wr_1='$wr_id' 로 조건을 줘서 업데이트 해주시면 되겠죠
물론 인덱스가 아니라서 속도 차이가 약간 있겠습니다. 체감할만큼은 아니겠지만...
정석은 mysql_insert_id() -B게시판의 인덱스 를 A게시판에 넣어야 맞지만
그럴려면 다시 A쪽 디비에 다시 접속해야 하므로 복잡해집니다.
그냥 B에 A의 인덱스를 너셔도 그렇게 안느릴껍니다.
제일 좋은것은 쌍둥이 처럼 관리 하는것이고
차선은 A에 B의 인덱스를 보관
그다음은 B에 A의 인덱스를 보관
순으로 속도차이가 있겠습니다.
수정할 때 새 글이 등록되는 것이 해결된줄 알았는데 착각이었네요.
수정시 타게시판에 등록된 자리(글번호)로 들어가야 하는데 이 번호를 안 다음(글을 등록할 때 타게시판에 등록 될 글 번호를 알 방법이 없기 때문에) 그 자리에 수정된 내용을 써라라는 명령을 줄수가 없네요.
새글 등록은 가능하지만 수정은 방법이 없는것 같습니다. 메가쵸코님의 답변을 여러번 읽었지만 이것에대한 해답인지는 제가 잘 이해를 못했습니다.
수정시 타게시판에 등록된 자리(글번호)로 들어가야 하는데 이 번호를 안 다음(글을 등록할 때 타게시판에 등록 될 글 번호를 알 방법이 없기 때문에) 그 자리에 수정된 내용을 써라라는 명령을 줄수가 없네요.
새글 등록은 가능하지만 수정은 방법이 없는것 같습니다. 메가쵸코님의 답변을 여러번 읽었지만 이것에대한 해답인지는 제가 잘 이해를 못했습니다.
요점은 이겁니다. 원본을 A 사본을 B라 하겠습니다.
1. 둘이 쌍둥이처럼 관리 하라
이경우에 insert 하는 구문뒤에 ,wr_id='$wr_id' 를 추가하시면 인덱스 까지 저장이 되겠지요? ($wr_id가 뭐냐면 그누에서 write테이블에 인서트 한 인덱스를 가지고 있는 변수입니다.)
단 이경우 wr_id 가 중복될경우 문제가 생깁니다.
2.B게시판 예비필드에 A게시판의 wr_id 를 저장
인서트문 에
,wr_10='$wr_id' 를 넣어주시면 wr_10 에 A게시판의 wr_id 가 저장이 될껍니다.
이건 아실꺼라 보고
그리고 update의 where 조건을 wr_10='$wr_id' 인 것을 수정해 주시면 됩니다.
3.A게시판의 예비필드에 B게시판의 인덱스를 저장
이건 A에서 인서트 후,B에서 인서트,다시 A로 돌아와서 B의 인덱스를 A의 예비필드에
넣고 업데이트 해주셔야 합니다. 이방법이 제일 추천드리면서도 ,추천하기 어렵습니다.
그누 dbconfig파일을 읽어보시면 계정정보가 있을껍니다만
common.php에서 읽은다음에 바로 지워버립니다.
inckude한번 해주시고 그 변수를 이용해서 A에 다시 접근 후(그냥 바로 해도됩니다만
이후 수정도 생각해 주셔야 합니다.)
예비필드에 업데이트 해주시면 됩니다. 이후에는 A게시판의 예비필드에서 뽑아가지고
where를 날려주시면 됩니다.
소스를 아예 써드리는게 더 편합니다만,
일부러 안써드릴랍니다. 어느정도 공부 하신것 같기때문에...
삽질하면서 느는게 프로그래밍 같습니다.
1. 둘이 쌍둥이처럼 관리 하라
이경우에 insert 하는 구문뒤에 ,wr_id='$wr_id' 를 추가하시면 인덱스 까지 저장이 되겠지요? ($wr_id가 뭐냐면 그누에서 write테이블에 인서트 한 인덱스를 가지고 있는 변수입니다.)
단 이경우 wr_id 가 중복될경우 문제가 생깁니다.
2.B게시판 예비필드에 A게시판의 wr_id 를 저장
인서트문 에
,wr_10='$wr_id' 를 넣어주시면 wr_10 에 A게시판의 wr_id 가 저장이 될껍니다.
이건 아실꺼라 보고
그리고 update의 where 조건을 wr_10='$wr_id' 인 것을 수정해 주시면 됩니다.
3.A게시판의 예비필드에 B게시판의 인덱스를 저장
이건 A에서 인서트 후,B에서 인서트,다시 A로 돌아와서 B의 인덱스를 A의 예비필드에
넣고 업데이트 해주셔야 합니다. 이방법이 제일 추천드리면서도 ,추천하기 어렵습니다.
그누 dbconfig파일을 읽어보시면 계정정보가 있을껍니다만
common.php에서 읽은다음에 바로 지워버립니다.
inckude한번 해주시고 그 변수를 이용해서 A에 다시 접근 후(그냥 바로 해도됩니다만
이후 수정도 생각해 주셔야 합니다.)
예비필드에 업데이트 해주시면 됩니다. 이후에는 A게시판의 예비필드에서 뽑아가지고
where를 날려주시면 됩니다.
소스를 아예 써드리는게 더 편합니다만,
일부러 안써드릴랍니다. 어느정도 공부 하신것 같기때문에...
삽질하면서 느는게 프로그래밍 같습니다.
메가쵸코님의 친절하고 자세한 설명 덕분에 문제가 해결되었습니다. 정말로 감사드립니다.
문제가 해결되나 싶더니 또 다른 문제가 생겨버렸습니다.
그동안 테스트한 글들을 지울려고 하는데 원본은 잘지워지는데 사본은 관리자가
지워도 리스트에서도 안지워지고 뷰페이지에서도 안지워지네요.
게시판 통채로 날려버릴 수도 없고 난감하네요.
이건 어떻게 처리해야하는지 죄송하지만 또 여쭤봅니다.
문제가 해결되나 싶더니 또 다른 문제가 생겨버렸습니다.
그동안 테스트한 글들을 지울려고 하는데 원본은 잘지워지는데 사본은 관리자가
지워도 리스트에서도 안지워지고 뷰페이지에서도 안지워지네요.
게시판 통채로 날려버릴 수도 없고 난감하네요.
이건 어떻게 처리해야하는지 죄송하지만 또 여쭤봅니다.
관리자가 지워도 안된다는게 수상하네요.
문제가 될 부분이라고는 A게시판의 회원이 B게시판에 존재 하지 않는다 정도인데...
그래도 관리자 권한으로는 지워질텐데 이상합니다.
뷰페이지에서 체크박스로 일단 지워보시고,
delete.php의 goto_url을 (페이지이동) 주석처리 해보시고 에러메세지가 있는지 확인해 봐주세요.
디비에서 지우면 되겠지만 오류의 원인은 알고 넘어가야 할 것 같습니다.
문제가 될 부분이라고는 A게시판의 회원이 B게시판에 존재 하지 않는다 정도인데...
그래도 관리자 권한으로는 지워질텐데 이상합니다.
뷰페이지에서 체크박스로 일단 지워보시고,
delete.php의 goto_url을 (페이지이동) 주석처리 해보시고 에러메세지가 있는지 확인해 봐주세요.
디비에서 지우면 되겠지만 오류의 원인은 알고 넘어가야 할 것 같습니다.
싹 밀고서 최신 그누보드 버젼으로 새로깔고 테스트 해 보았습니다.
타사이트가 아닌 현사이트의 a게시판에서 b게시판으로 복사했을 때도 같은 현상이 있네요.
원본은 삭제가 되는데 사본은 관리자라도 삭제가 안되는 ...
그렇다면 처음소스에서 더 넣어줘야 할 무언가 있는 것 같습니다. delete.php도 주석처리해서 테스트해보았습니다만 지울때 페이지가 안넘어가는 현상외에는 특별한 것이 없는것 같습니다.
타사이트가 아닌 현사이트의 a게시판에서 b게시판으로 복사했을 때도 같은 현상이 있네요.
원본은 삭제가 되는데 사본은 관리자라도 삭제가 안되는 ...
그렇다면 처음소스에서 더 넣어줘야 할 무언가 있는 것 같습니다. delete.php도 주석처리해서 테스트해보았습니다만 지울때 페이지가 안넘어가는 현상외에는 특별한 것이 없는것 같습니다.