a, b 두개시판 자료 동시 입력 > 그누4 질문답변

그누4 질문답변

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

a, b 두개시판 자료 동시 입력 정보

a, b 두개시판 자료 동시 입력

본문

a와 b 게시판 이 있을때...

a 게시판의 구성항목은
이름
제목
내용

b 게시판의 구성항목은
이름
제목
내용
기타

이런식으로 앞의 항목은 두게시판이 모두 같다고 할때....

a게시판에서 이름, 제목, 내용을 입력하면...
a게시판 뿐 만 아니라, b 게시판의 이름, 제목, 내용에 같은 내용이
입력되게하고 싶은데.. 가능할까요 ? (일종에 a는 원본게시판이고, b는 백업 개념)

가능하다면 어찌하면 될까요 ?

물론, a 게시판은 한번 기록 하면 수정 할수 없도록 할 생각입니다.

댓글 전체

파일을 참고해서 하나 따로 만드시는게 정석입니다. 거기 보면 sql 문이 신규($w=="")와 수정($w=="u") 두가지가 있을껍니다. 그걸 $write_table 만 강제로 바꿔주신 다음에
반복해야 하는데 두 게시판이 동시에 공백에서 시작하시는 것 혹은 b게시판이 내용이 하나도 없을경우
에 한해서 간단히 해결하는 방법이 있습니다.

a게시판만 사용하는 스킨디렉토리에 write_update.skin.php 를 수정합니다.

하단에 다음을 추가
$target_table= $g4['table_prefix'].$g4['write_prefix']."b테이블명";
sql_query("insert into $target_table select * from $write_table where wr_id='$wr_id'",FALSE);
sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$target_table'",FALSE);

꼭 wr_id(인덱스) 가 중복되지 않도록 b테이블은 깔끔해야 합니다.
물론 삭제했을경우 같이 삭제되지는 않습니다.,FALSE 부분은 잘안될경우 지우면 에러가 나옵니다.
답변 감사합니다.
b 게시판은 공백 게시판이고요.
테이블은 test77 로 줬고...

베이식 게시판(a,b모두 basic스킨)인데요 write.update.skin.php 가 안보여서

알려주신 내용을 기준으로 아래처럼 만들어서 넣었습니다.

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

// 자신만의 코드를 넣어주세요.
$target_table= $g4['table_prefix'].$g4['write_prefix']."test77";
sql_query("insert into $target_table select * from $write_table where wr_id='$wr_id'",FALSE);
sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$target_table'",FALSE);

?>

그리고 a 게시판에서 하나등록 해밨는데...b 게시판에 암것도 안보여요....
일단 a,b게시판 둘다 같은 스킨을 쓰시면 안되고요
a게시판의 스킨은 유일해야 합니다.
그게 어려우시면 bo_table 로 걸러 주셔야 하구요.
그보다는 basic 스킨디렉토리를 통째로 내려받으신후 이름을 바꾸시고 올려서
a만 사용하도록 설정해주시고요.
write_update.skin.php 입니다. 파일명 확인 해주세요.

그리고 쿼리에 문제도 좀 있었네요 흙 ㅠㅠ
다시 알려드릴께요 죄송합니다.

$target_table= $g4['table_prefix'].$g4['write_prefix']."test77";
if($w=="") {
sql_query("insert into $target_table select * from $write_table where wr_id='$wr_id'",FALSE);
sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$target_table'",FALSE);
}

else if($w=="u") {
sql_query("delete from $target_table  where wr_id='$wr_id'");
sql_query("insert into $target_table select * from $write_table where wr_id='$wr_id'",FALSE);
}
알려주신대로 basic게시판을

a는 basic77
b는 basic78 이렇게 주고... 스킨들이나 프로그램은 그누 원본 그대로임.

a basic77 아래, write_update.skin.php 위처럼 만들어 넣었습니다.

증상은 위와 동일하게 암것도 안나옵니다.
일단 수정을 위에 오류가 있어서 고쳐드렸는데요.(꼼수를 좀 썼습니다. update조인이 좀 취약해서
지운다음에 인서트로 짜보았습니다. ) 수정하는 도중에 이미 해보셨군요.
근데 삽입과정부터 문제가 있으신듯 한데요.
일단 위의 내용으로 교체 해주신 후에 ,FALSE를 제거하신 후에 무슨 에러가 나는지 좀 봐주세요.
제가 그냥 콘솔에서 쿼리 테스트 해보니까 수정한 것은 잘 되는듯한데. 변수 문제일수도 있습니다.
그리고 에러가 안난다면
$target_table= $g4['table_prefix'].$g4['write_prefix']."test77"; <--B게시판명인가도 체크 해주세요.
수정하신 내용과 false 제거후,

insert into g4_g4_write_test77 select * from g4_write_test where wr_id='119'

1146 : Table 'test.g4_g4_write_test77' doesn't exist

error file : /gnuboard4/bbs/write_update.php

로 뜹니다.

a게시판의 테이블은 test
b게시판의 테이블은 test77

둘다 현재 빈게시판 이고요...내용둘다 지웠어요...
네, 앞에 지우니깐 됩니다. ㅎㅎ

근데 앞에 글번호 있자나요,,, 원래 원본은 1, 2 이런식으로 붙거든요...

근데 뒤에 인서트한 b에서는 -1 로 나와서 두게시판 모두 지우고 다시 했더니

이번에는 b 게시판은 -2 로 표시 됩니다.

게시판을 둘다 통째로 다시 지우고 해볼께요...
다 지우고 다시하니깐 되는데요...

a 게시판은 정상적으로 글번호가 나오는데,

b 게시판은 글한게 지우면 번호가 한개식 - 되는거 같네요...음...

히한하네요...
테스트중 글번호가 문제가 생길 수 있습니다.
관리자모드에서 게시판 수정모드로 가시면 카운트를 조정합니다 라는 체크박스가 있을꺼예요
누르시고 저장해보세요. 그 뒤로 몇개 테스트 해보신 후 그래도 그런 현상이 생기면 소스를 수정해 드릴께요.

근데 이해는 하고 계신가요 ㅎㅎ;
제가 사용하던게 있어 조금 수정해 올려봅니다. 수정한거 테스트는 안해봤네요

a게시판 write_upadte.skin.php 에 붙여 넣으세요
bbs/write_update.php 에서 뽑아온겁니다. 원래 용도는 관리자가 회원들 게시물중 선정하여 오늘의추천게시물로 선정해 게시판에 따로 삽입하는걸 만든겁니다.

//새글일때만.
if(!$w){
$adm_board="g4_write_test77";
    if ($member[mb_id])
    {
        $mb_id = $member[mb_id];
        $wr_name = $board[bo_use_name] ? $member[mb_name] : $member[mb_nick];
        $wr_password = $member[mb_password];
        $wr_email = $member[mb_email];
        $wr_homepage = $member[mb_homepage];
    }

$wr_num_today = get_next_num($adm_board);
$wr_reply = ""; 

    $sql_today = " insert into $adm_board
                set wr_num = '$wr_num_today',
                    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_last = '$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' ";

    sql_query($sql_today);

    $wr_id_today = mysql_insert_id();

    // 부모 아이디에 UPDATE
sql_query(" update $adm_board set wr_parent = '$wr_id_today' where wr_id = '$wr_id_today' ");
    // 새글 INSERT
    //sql_query(" insert into $g4[board_new_table] ( bo_table, wr_id, wr_parent, bn_datetime ) values ( '$bo_table', '$wr_id', '$wr_id', '$g4[time_ymdhis]' ) ");
  //  sql_query(" insert into $g4[board_new_table] ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '$bo_table', '$wr_id', '$wr_id', '$g4[time_ymdhis]', '$member[mb_id]' ) ");
    // 게시글 1 증가
    sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = 'adm_today'");
}
넵, 이해 됬어요....원래는 한개씩 insert 하여야 한다고 하셨는데, table 전체를 인서트
해주신 거자나요...

그리고, write 업데이트 스킨은 필요할때 마다 해당 내용을 넣어주면 되는거란 것도 알았어요..

네, 카운트조정이 그런뜻이었군요.. 됩니다. ^^


답글 쓰는중에 또 올려 주셨네요...ㅎㅎ 새로 올려주신게 정석인가보네요...
걍 바도 한항목씩 처리하는게 보이네요...

근데 카운트 하니깐 생각난건데, 글번호가 보통은 1번 부터 시작하는데

1000번 이나, 2000번 모 이렇게 시작하거나, 혹은 A,b 가 들어간 a0001 모 이런식으로도
할수 있나요 ?
문자가 들어간건 불가능하지만 앞에 000으로 채우는건 간단합니다.
그치만 1000번부터 시작해봐야 나중에 꼬였을 경우 다시 조정하면 원래대로 되버릴꺼예요.
꼼수는 있습니다. 물론 ㅎㅎ
skinartisanCOM 께서 올려주신게 정석이예요.
저걸로도 연습삼아 해보세요.
skinartisanCOM 님 감사합니다.

올려주신 소스는, 메가쵸코님께서 말씀하셨던, 한개씩 인서트하는 것 맞죠 ?

해당 소스는 스크랩해서, 귀중한 자료로 쓰겠습니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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