올해 처음으로 질문좀 드리겠습니다.

올해 처음으로 질문좀 드리겠습니다.

QA

올해 처음으로 질문좀 드리겠습니다.

답변 3

본문

a게시판 글이 100개정도 있습니다. 필드는 50개

b게시판 글이 300개정도 있습니다. 필드는 72개 

서로 필드갯수가 다릅니다. 

 

a게시판을 b게시판과 같이 디비를 어떻게 만들 수 잇을까요?

쉽게 말해 글 100개는 살리면서 필드구조만 b게시판처럼 하고 싶다는 것입니다.

뭐라고 설명할 방법이 없네~,,ㅋ

 

이렇게 될지...

 

b게시판 디비에 a게시판 wr_id 1~100까지는 다시 집어넣고 싶은데 어떻게 할 수 있을지요..

b게시판중에 a게시판 wr_id 1~100까지는 대체되는 것입니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 3

어쨋든 게시판의 db내용을 옮기려면

해당 게시글을 읽어오고 각 필드(wr_subject, wr_content등)를 변수에 담고

그 이후에 기존의 wr_id 1,2,3번등 쭉쭉 업데이트로 기존의 가져오고 싶은 내용으로 갱신해줘야하는데

게시판을 개조해서

체크박스 이후에 게시물이동로직을 이용하면 구현이 가능할것같고

그것이 어렵다면

각각의

게시물의 view.skin.php페이지쪽이나 list.skin.php페이지에서

wr_id 몇번으로 옮길지 입력하고 확인버튼누르면 쫙 일괄로 업데이트 되는등

방법은 수십가지가 있겠습니다.

제머리로는 나오는게 해당 a게시판의 1번게시물에 들어갔을때에

 

하단에


$table = "g5_write_b";
   $sql = " update $table
                set wr_num = '$view[$wr_num]',
                     wr_reply = '$view[$wr_reply]',
                     wr_comment = $view[$wr_comment],
                     ca_name = '$view[$ca_name]',
                     wr_option = '$view[$wr_option]',
                     wr_subject = '$view[$wr_subject]',
                     wr_content = '$view[$wr_content]',
                     wr_1 = '$view[wr_1]',
                     wr_2 = '$view[wr_2]'
					 where wr_id = '1' ";
    sql_query($sql);

 

뭐 대략 이런식으로 업데이트문을 바로 날려주면

담는즉시 날리면서 업데이트 하겠지요

물론 디비는 충분히 백업해놓으시고 작업하셔야하겠죠

 

관리자로 로그인하면 게시판목록에 "선택복사", "선택이동"이란 놈이 있는데

이것이 bbs/move.php를 사용합니다.

실제 데이타 복사나, 이동처리하는것은 bbs/move_update.php 인데

이 파일에서 insert 쿼리 부분에 a 게시판의 추가된 50개 필드만 처리해서 선택복사 해보는것이 좋을것 같습니다.

1. 작업시 move_update.php는 백업받아두시고

2. move_update.php 수정하여 선택복사 해보시면서

3. 뭔가 문제가 생기면 새로 추가되는 b 게시판에 잘못들어간 데이타만 삭제하는 방식으로 진행하면 될것 같습니다. 

 

게시판a와 게시판b의 wr_id가 동일하다면 다음처럼 쿼리한번으로 처리하시면 됩니다.

다음 쿼리는 a, b 테이블을 기준으로 a의 해당 필드에 b의 해당필드의 값으로 변경하는데

기준은 a와 b의 wr_id가 동일한것을 기준으로 처리합니다.

업데이트하고자하는 필드를 모두 입력하시면 됩니다.  

게시판 두개를 복사해서 간단히 테스트 완료되 쿼리입니다. 

update testa a, testb b  
    set a.wr_subject = b.wr_subject, a.wr_content = b.wr_content
    where a.wr_id = b.wr_id;
 

아 혹시 전체를 적용하기전에 정상적으로 실행되는지 특정 wr_id만 적용해 보고 싶다면 where를 다음처럼 해보세요.
wr_id 가 1인것만 해보고 싶을때

where a.wr_id = b.wr_id and a.wr_id = 1;

wr_id가 1, 2, 3인것을 해보고 싶을때
where a.wr_id = b.wr_id and a.wr_id in (1, 2, 3);

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,119
© SIRSOFT
현재 페이지 제일 처음으로