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

게시판 미러링? 게시판 공유? 채택완료

또 한번 지식 동냥을 해봅니다.

지나치지 마시고 불쌍히 여기셔서 한마디 해주시면 감사하겠습니다.

 

A 게시판에 저장되는 글쓰기(수정, 삭제 포함)를 통해 bo_table=aaa 에 저장되는 내용들이

B 게시판(bo_table=bbb)에도 똑같이 저장되게 할 수 있을까요?

 

반대로

B 게시판에 저장되는 글쓰기(수정, 삭제 포함)를 통해 bo_table=bbb 에 저장되는 내용들이

A 게시판(bo_table=aaa)에도 똑같이 저장되게 할 수 있을까요?

 

혹, 알고 계시는 소스가 있음 공유 좀 부탁드립니다.

 

검색을 통해 알아봤는데, 생각했던 내용을 못찾겠네요...

도와주시면 감사하겠습니다.

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

답변 2개

채택된 답변
+20 포인트

일단 기본적인 복사 방법은

 

https://gnustudy.com/bbs/board.php?bo_table=skin_board&wr_id=166

 

와 bbs/move.php 참고했습니다.

 

예전에 이방법으로 코드 짜고 사용했었는데 잘 되었었습니다.

 

aaa와 bbb게시판 모두 동일 스킨으로 해주시고

 

서로 같은 게시글인지 찾을려면 여분 필드 wr_10에 난수를 글 작성시 생성하는것으로 하겠습니다.

 

lib/common.lib.php에

 

</p>

<p>//난수 생성

function generateRandomString($length = 10) {

    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

    $charactersLength = strlen($characters);

    $randomString = '';

    for ($i = 0; $i < $length; $i++) {

        $randomString .= $characters[rand(0, $charactersLength - 1)];

    }

    return $randomString;

}</p>

<p> </p>

<p>

추가 하시고

 

게시판 스킨 write.update.php 에

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p>if($bo_table == "aaa"){

    $table_copy = "bbb"; 

}else{

    $table_copy = "aaa"; 

}</p>

<p>if($w==""){

    $rand = generateRandomString(6); //난수 6자리 생성

}else{

    $rand = $wr['wr_10'];

}

$write_table_copy = $g5['write_prefix'] . $table_copy;</p>

<p>if ($w ==''){</p>

<p>    $sql = " update $write_table  set wr_10 = '$rand'  where wr_id = '$wr_id' ";

    sql_query($sql);</p>

<p>    

    $wr_num_copy = get_next_num($write_table_copy);</p>

<p>    $sql_copy = " insert into $write_table_copy

                set wr_num = '$wr_num_copy',

                     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_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 = '".G5_TIME_YMDHIS."',

                     wr_last = '".G5_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 = '$rand'";

    sql_query($sql_copy);</p>

<p>    $wr_id_copy = sql_insert_id();</p>

<p>    // 부모 아이디에 UPDATE

    sql_query(" update $write_table_copy set wr_parent = '$wr_id_copy' where wr_id = '$wr_id_copy' ");</p>

<p>    // 게시글 1 증가

    sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$table_copy}'");</p>

<p>    // 복사게시판 최신글 캐시갱신

    delete_cache_latest($table_copy);</p>

<p>}else{</p>

<p>    $sql = " update $write_table  set wr_10 = '$rand'  where wr_id = '$wr_id' ";

    sql_query($sql);</p>

<p>    $sql_update = " UPDATE $write_table_copy

                set wr_reply = '$wr_reply',

                     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_name = '$wr_name',

                     wr_email = '$wr_email',

                     wr_homepage = '$wr_homepage',

                     wr_datetime = '".G5_TIME_YMDHIS."',

                     wr_last = '".G5_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'

            WHERE `wr_10` = '".$wr['wr_10']."'";                                         

    sql_query($sql_update);

}

?></p>

<p>

 

* 주의 하실점은 글 수정시 같은 글 수정 되게 하는건 필드 set 값들을 좀 수정을 하실 필요가 있습니다.

 

수정시 wr_ip, wr_last 이런 필드는 빼도 될겁니다.(

 

그리고 작성자가 직접 수정하고 write에 input으로 나타나는 부분은 $필드명($wr_1 등)으로 해주시면 되시고(이 답변에서는 안뺐습니다....)

 

write에 나타나지 않는 숨겨진 필드는 $wr[필드명]으로 업데이트 해주시면 될겁니다.

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

답변에 대한 댓글 1개

감사합니다. Dessi님..^^
덕분에 잘 해결될 것 같습니다.

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

똑같은 거라면 왜 두 개가 필요한지 알 수 있을까요?

 

mysql view 만들기를 한번 검토해 보세요.

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

답변에 대한 댓글 2개

음... 동일한 사이트에서 메뉴별로 그룹을 지정했습니다.
메인그룹?에서의 Q&A 게시판을 BBB라는 그룹 메뉴에서도 동일하게 보이게 하고 싶은건데요.
그누보드가 기본적으로 하나의 게시판에 다수의 그룹아이디(gr_id)를 부여할 수 없다고 해서
제나름의 해결방안을 찾다 질문을 드린겁니다.^^;;
이렇게 되면
나중에 댓글을 다는 경우 문제가 생길 수도 있고, 조회수도 그렇고
차라리 메뉴 쪽을 손 보는 것이 좋지 않을까요?

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

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

로그인

전체 질문 목록

🐛 버그신고