즐거운 한가위 되세요~

즐거운 한가위 되세요~

QA

즐거운 한가위 되세요~

본문

order 게시판 write.update.skin에

 

                $sql = "INSERT INTO g5_abc(
            mb_id, wr_name, wr_subject, wr_id, in_qty, wr_datetime ) VALUES(

                '".$mb_id."',
                '".$wr_name."',
                '".$wr_subject."',    
                '".$wr_id."',
                
                '".$in_qty."',
                '".G5_TIME_YMDHIS."'    
            )";
            
            sql_query($sql);
        

이렇게 하여 g5_abc 테이블에 별도로 집어넣고 있습니다.

 

그런데 게시판 글을 수정하면 위의 필드에는 변동이 없는데 수정할때마다 g5_abc테이블에 idx가 늘어나면서 기록되고 있습니다.

어떻게 해야 order게시판에서 g5_abc테이블에 위의 내용을 처음에는 insert시킨뒤에 같은 wr_id의 데이터는 업데이트를 시킬 수 있을까요?

 

 

 

이 질문에 댓글 쓰기 :

답변 2

기준이 되는 테이블(게시판)에 데이터를 넣었을때 g5_abc (두번째 게시판)에도 저장이 되며

이 두 테이블 데이터가 동일해야한다는 말씀인가요?

 

왜 그런 구성을 하는지는 모르겠지만, 글이 삭제될경우에도 처리해줘야할텐데요.

 

구현을 하자면

 처음글이 등록될때  기준이 되는 테이블의 키값 (wr_id) 을 따로  두번째 테이블 여분필드에 저장시킵니다.  꼭 여분필드가 아니라 그냥 그대로  insert해도 무방합니다.

 두 게시판은 이 키값으로 서로 물려있겠죠. (wr_id)

 

글을 저장할때 무조건 insert가 아닌 키값으로 select 하여 데이터가 없으면 insert

 데이터가 있다면 update를 하는 형식이 되어야 겠네요.

 

 

 

 

기준이 되는 테이블(게시판)에 데이터를 넣었을때 g5_abc (두번째 게시판)에도 저장이 되며

이 두 테이블 데이터가 동일해야한다는 말씀인가요?

맞습니다...
g5_abc는 게시판은 아니구요 그냥 만든 필드몇개만 들어있는 테이블입니다.


order게시판의 wr_id는 g5_abc에 insert 시켜서 값이 있습니다.
글을 저장할때 무조건 insert가 아닌 키값으로 select 하여 데이터가 없으면 insert

 데이터가 있다면 update를 하는 형식이 되어야 겠네요. <--맞습니다.

그런데 코드를 짤줄 몰라서요,,도움이 필요합니다.

$sql = " select wr_id as exist
from g5_abc 
where wr_id = '$wr_id'

";
$result = sql_query($sql);
$row=sql_fetch_array($result);

if ( $row['exist'] ){
$rs = sql_query(" update g5_abc set ~~ where wr_id = '$wr_id' ");
}else{

$sql = "insert g5_abc poll
set ~~
";
$rs = sql_query($sql);
}

if( $rs == 1) 성공~



이런형태가 되겠죠..

테이블을 새로 만드시는게 낫습니다.

 

idx int auto_increment primary key , 

로 선언된경우

 

임의의 값을 넣는것도, 변경하는것도 안됩니다.

 

1. 테이블 복제해서 하나 만들어두시고

  (g5_abc와 동일한 테이블을 새로 생성후 insert)

  

2. g5_abc 구조 복제후 기존, g5_abc drop

 

3.  위의 두가지를 한번에 해결하는건 g5_abc의 테이블 이름을 다른것으로 변경하는것도 방법입니다.

 

4. 새로운 g5_abc를 생성하되

   idx int , <-- 이렇게만 사용하시고

  글 작성후 

   (select max(idx)+1 from g5_abc)

  형태로 순번을 증가시키거나 임의의 값으로 추가하시거나 하시면됩니다.

 

 

 

감사합니다.
idx int auto_increment primary key , 오토인크리즈먼트로 선언되었습니다.
테스트 테이블이라 날리고

그러면 테이블 새로 만들때
idx 필드는 넣지말고
                '".$mb_id."',
                '".$wr_name."',
                '".$wr_subject."',   
                '".$wr_id."',
               
                '".$in_qty."',
                '".G5_TIME_YMDHIS."' 
이 필드만 넣고

글 수정시에 값이 인서트되는데...
이후 게시물 수정시에 인서트가 아니라
업데이트를 시켜야 하는데
어떻게 하라는 말씀이신지요?

가만보니..
insert 후에 update를 하면 키를 잡을 대상이 많아 집니다.
따라서
insert 수행전에

$sql = "select max(idx)+1 as nextidx from g5_abc";
$row = sql_fetch($sql);

를 하여


 $sql = "INSERT INTO g5_abc(idx,
            mb_id, wr_name, wr_subject, wr_id, in_qty, wr_datetime ) VALUES(
                '".$row['nextidx']."',
                '".$mb_id."',
                '".$wr_name."',
                '".$wr_subject."',   
                '".$wr_id."',
               
                '".$in_qty."',
                '".G5_TIME_YMDHIS."'   
            )";

로 하시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,126 | RSS
QA 내용 검색

회원로그인

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