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

즐거운 한가위 되세요~ 채택완료

7년 전 조회 2,348

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개

채택된 답변
+20 포인트

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

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

 

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

 

구현을 하자면

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

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

 

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

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

 

 

 

 

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

답변에 대한 댓글 3개

기준이 되는 테이블(게시판)에 데이터를 넣었을때 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)

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

 

 

 

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

답변에 대한 댓글 2개

감사합니다.
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."'
)";

로 하시면 됩니다.

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

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

로그인

전체 질문 목록

🐛 버그신고