두개 게시판 동시에 글쓰기 글 순서 문제??wr_id구하기? 정보
두개 게시판 동시에 글쓰기 글 순서 문제??wr_id구하기?
관련링크
본문
안녕하세요
포인트6만점 날려버리고 겨우겨우 투표해서 2000포인트 얻었어요 ㅠ.ㅠ
겨우 질문 합니다 ㅠ.ㅠ
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=144306&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%B0%D4%BD%C3%C6%C7+%B5%BF%BD%C3&sop=and
를 참고해서 게시판 A에 글을 쓸때,
게시판 "spec_db" 에 동시에 글을 올릴 수 있도록 했습니다.
이때 제목을 wr_3값으로 들어가게 했습니다. 내용은 빈내용으로나두구요
카테고리는 bo_table값으로 들어가도록 했습니다.
더 낳아가서 관리자만 작성하는 게시판이라 체크(wr_14)를 할경우 수정이든 새글쓰기든 게시판B에 글을 올릴 수 있도록 했습니다.
소스:
bbs/write.update.php
300 line 부근
==================중략=================
$wr_id = mysql_insert_id();
// 부모 아이디에 UPDATE
sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");
// 새글 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 = '$bo_table'");
include "append_else.php"; // (스펙,일정게시판동시 쓰기 위해)2010.02.26
// 쓰기 포인트 부여
if ($w == '')
{
if ($notice)
{
==================후략=================
append_else.php 문서(bbs/write.update.php에 인클루드 됩니다.) 내용
<?
include_once("./_common.php");
if ($bo_table == "navi" || $bo_table == "pc" || $bo_table == "3dav" || $bo_table == "pc" || $bo_table == "sp" || $bo_table == "etc" ){
if ($wr_14){
$sql = " insert into g4_write_spec_db
set wr_num = '$wr_num',
wr_reply = '$wr_reply',
wr_option = '$html,$secret,$mail',
wr_comment = 0,
ca_name = '$bo_table',
wr_content = '$wr_3',
wr_subject = '$wr_3',
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]'";
sql_query($sql);
$wr_id = mysql_insert_id();
// 부모 아이디에 UPDATE
sql_query(" update g4_write_spec_db set wr_parent = '$wr_id' where wr_id = '$wr_id' ");
// 새글 INSERT
//sql_query(" insert into $g4[board_new_table] ( bo_table, wr_id, wr_parent, bn_datetime ) values ( 'spec_db', '$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 ( 'spec_db', '$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 = 'spec_db'");
}
}
?>
여기까지는 잘 됩니다.
그런데,
여기서 문제점이 있습니다.
게시판 A는 문제가 없는데
게시판"spec_db"에서 글 리스트 중 맨 처음(글 1번과 2번)으로 들어가 버립니다.
맨 나중으로 들어가야 하는데 말이죠
즉, 게시판 "spec_db" 는 원래 운영 되는 게시판이고, 글이 이미 20개 있습니다.
그럼 게시판 A에서 글을 쓸때 위 팁을 이용해서 글쓰기를 하면
게시판 "spec_db "에 21번째에 글이 들어가야 하는데,
1번으로 예전 글 을 모두 몰아내고 맨 첫글 전으로 들어가는 것입니다.
또한가지 위의 문제와 더불어, view화면에선 삭제가 되는데, list화면에서 체크후 선택 삭제시 삭제가 되지 않습니다.
아마도 같은 원인 인것 같습니다. wr_id값이 문제인것 같은데..
글이 제대로 등록되게 하려면 어떻게 해야 할까요?
댓글 전체
$wr_num_spec = get_next_num($g4_write_spec_db); // 추가 - 위치(반영될 행) 변경 해 보면서..
$sql = " insert into g4_write_spec_db
set wr_num = '$wr_num_spec', // 변경
.......
.......
// 부모 아이디에 UPDATE
sql_query(" update g4_write_spec_db set wr_parent = '★$wr_num_spec★' where wr_id = '$wr_id' "); // 별과별사이수정
참고 해 보세요.
common.lib.php 내용 중
// 게시판의 다음글 번호를 얻는다.
function get_next_num($table)

error file : /bbs/write_update.php
일단 이렇게 나와서 수정해볼께요
방금 수정했는데
==> $wr_num_spec = get_next_num($g4_write_spec_db);
==> $wr_num_spec = get_next_num(g4_write_spec_db);
했습니다
만,
글도 제대로 올라가는데..
다음과 같은 에러창이 뜹니다.
(메세지창)
"글이 존재하지 않습니다.
글이 삭제되었거나 이동하였을 수 있습니다.
확인"
그리고 spec_db 게시판의 게시물이 삭제가 안됩니다. ㅠ.ㅠ
이번엔 view화면에서도 삭제가 안되네요ㅠ.ㅠ
참고로 이상한것이... get next num으로 뽑아온 숫자는 -52 이고, 실제 글 수는 47개 라는 것입니다. 그래서 삭제가 안되는 것일까요??
// 부모 아이디에 UPDATE
sql_query(" update g4_write_spec_db set wr_parent = '★$wr_num_spec★' where wr_id = '$wr_id' "); // 별과별사이수정
조합쟁이(이거 저거 같다 붙여서 사용하는) 수준이라 -- ;;

아까랑 똑같이 되네요~그리구..
$wr_id = mysql_insert_id();
요것이;; 밑에 있는데요
처음증상이 독같이 나타났습니다.
[wr_parent 도 원글,답변,댓글...시 wr_id 를 가져와서 원글에 대한 것임을 인식하는 것 @@??]
잠시 조금 더 확인 해 보고요 ㅡㅡ; 헷갈리네

$wr_num_spec = get_next_num(g4_write_spec_db); 추가 한다음
wr_num 만 $wr_num_spec 값으로 넣어주구요
나머지는 그대로 wr_id로 나두었습니다.
일단 등록도 되고
삭제가 됩니다!!!
그런데 똑같은 경고창이 뜨네요 (글이 없다는"글이 존재하지 않습니다.
글이 삭제되었거나 이동하였을 수 있습니다.
확인"
)
그리고 너무 감사합니다. 글이 위로 올라온것 만 해도(삭제도 되고) 그런데 wr_id가 지금 글쓰는 A 게시판 wr_id값이 들어가는 거죠? 이걸.. 아 ..그런데 wr_num 하고 wr_id 하고 같은 값이 아닌듯????
어쩃든 핑핑 도는 군요!!!
일단 안지워지는 것 지우기 위해 DB에 접속해 보니까요 역시나 wr_id 하고 wr_parent하고 값이 달라버리네요 그래서 안지워진듯, 이때 wr_num 값이 wr_parent에 들어가면 안되는 거 같습니다.
왜냐하면 wr_id 는 다른값(게시판 A의 글의 wr_id)이 들어가기 때문에...
따라서 spec_db의 wr_id값을 불러와서.. 1을 증가시킨 다음 wr_id와 wr_parent에 넣어줘야 하는듯? 참고로 wr_num 값은 올바른 값이 분명 들어가긴 하는데 , wr_id 와는 상관이 없네요 그럼 wr_id 를 찾는 것만 하면? 될까요
wr_id 를 어떻게 구해오죠 ㅠ.ㅠ sql로..
음.. select wr_id from spec_db게시판 where 마지막글
이건가요? 이거에서 wr_id를 +1 하면 될까요;;;;;
이건 어떻게 ...
wr_id는 자동증가 이고 부모 아이디 업데이트시 wr_parent = $wr_id 요게 처리되어 둘이 같아져야 하는데 내용은 bbs/write_update.php 하고 같은데..
잘못 출발해서 작업하시는게 괜히 길어졌네요. @@;;
게시판 하나 만들어서 해 볼께요. 수준 미달이 글 보고 하려니 ;;

이제 spec_db게시판의 wr_id만 불러오면 되는데요 감사합니다!!
그런데 경고문구는 다른 곳이 원인인것 같습니다.
경고 문구 날때 상태표시줄(로딩되는주소) 살펴보면 이상한 wr_id를 호출하더라구요아마 wr_id가 하나 더 증가 한듯 합니다.(글쓰기를 2번 해서)이것을 해결하면 경고문구는 없어질 것 같구..
이제 wr_id만 해결하면 될듯 합니다!!

의외의 곳에서 힌트를 찾았네요!!!!!아무리 검색해도 없두만 ㅠ.ㅠ
$wr_id말고 다른 변수를 써보겠습니다~ 그리고 bbs폴더 말고 스킨의 write.update.head.skin을 써야겠네요!!
글게시할 게시판 스킨 write_update.skin.php 파일 하나 만드셔서 아래 소스 그대로 넣으신 후 게시판 부분만 확인.변경 해 보세요. (test_board 라는 부분하고 B01, B02)
<?
if(!$w){ // 새글일 경우
$test_board="g4_write_B02"; ★
$wr_num_test = get_next_num($test_board); ★
$wr_reply = "";
$sql_today = " insert into $test_board
set wr_num = '$wr_num_test', ★
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_test = mysql_insert_id();
// 부모 아이디에 UPDATE ★ 요기 아래 4군데
sql_query(" update $test_board set wr_parent = '$wr_id_test' where wr_id = '$wr_id_test' ");
// 새글 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 ( '$test_board', '$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 = '$test_board'");
}
?>

다시 한번 감사하구요! 늦은 밤 아니..;; 이른 아침 까지 도와주셔서 정말 감사합니다. 나중에 돈 많이 벌면 은혜 갚을께요!!!!^^
그런데
// 부모 아이디에 UPDATE ★ 요기 아래 4군데
sql_query(" update $test_board set wr_parent = '$wr_id_test' where wr_id = '$wr_id_test' ");
// 새글 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 ( '$test_board', '$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 = '$test_board'");
}
?>
부분은
$board_tb = "spec_db";
// 부모 아이디에 UPDATE ★ 요기 아래 4군데
sql_query(" update $test_board set wr_parent = '$wr_id_test' where wr_id = '$wr_id_test' ");
// 새글 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 ( '$board_tb', '$wr_id_test', '$wr_id_test', '$g4[time_ymdhis]', '$member[mb_id]' ) ");
// 게시글 1 증가
sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$board_tb'");
}
?>
가 맞네요^^
추가 되는 곳은 0 번 부터 게시되어 간혹 관리모드에서 카운트 조정 되어야 할 것 같은데.. 좀더 추가 점검 해 봐야겠습니다.
행복한 주말 보내시길.... ^^

게시물 증가 안되서 0 부터 나오거나, -로 나오는 것 테이블명 안써서 그런 현상이...
건승을 빕니다.

if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 자신만의 코드를 넣어주세요.
//네;;
if(!$w){ // 새글일 경우
if ($wr_14){ // 체크박스 체크
$wr_num_test = get_next_num(g4_write_spec_db);
$wr_reply = "";
$sql_today = " insert into g4_write_spec_db
set wr_num = '$wr_num_test',
wr_reply = '$wr_reply',
wr_comment = 0,
ca_name = '$bo_table',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_3',
wr_content = '$wr_3',
wr_link1 = '$wr_link1',
wr_link2 = '',
wr_link1_hit = 0,
wr_link2_hit = 0,
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]'";
sql_query($sql_today);
$wr_id_test = mysql_insert_id();
// 부모 아이디에 UPDATE
sql_query(" update g4_write_spec_db set wr_parent = '$wr_id_test' where wr_id = '$wr_id_test' ");
// 새글 INSERT
sql_query(" insert into $g4[board_new_table] ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( 'spec_db', '$wr_id_test', '$wr_id_test', '$g4[time_ymdhis]', '$member[mb_id]' ) ");
// 게시글 1 증가
sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = 'spec_db'");
}
}
?>
이게 저한테 맞춘 수정본 입니다.일단 문제 없이 잘 됩니다~
참고로
체크박스 값을 읽으려면
write_update.head.skin.php 에 넣어야 합니다~(그누 기본 lib일 경우->tail불러오는 구문이 저같은 경우는 없더군요)
