comment를 업데이트 할때 쿼리를 통해 db를 수정하고 싶습니다.

comment를 업데이트 할때 쿼리를 통해 db를 수정하고 싶습니다.

QA

comment를 업데이트 할때 쿼리를 통해 db를 수정하고 싶습니다.

본문

84a5df72d561c056e2d356d5bca8afdc_1474878163_7998.jpg 

우선 하나의 테이블에 개설되는 강의들 정보와 강의에 신청하는 사람들의 정보가 담기게 되어 있습니다.

 

수강신청은 마음에 드는 강의 글에 들어가 코멘트로 다는것으로 신청하게 되어 있는데요

 

이때 개설되는 강의의 상세정보와 수강신청하는 사람의 상세정보가 같은 컬럼 (wr_1) 에 들어가게 되어졌습니다.

 

문제는 본인이 수강신청한 과목을 조회할 때 전화번호를 입력하고, 조회가 되면 과목명과 시간을 보여줘야 하는데 select wr_subject from 테이블 where wr_3 = '010-xxxx-xxxx';로 했을 경우

null값이 나와 코멘트를 입력할 때 아래의 쿼리를 통하게 했고

$sql3 = "update 테이블 set wr_subject = '$wr_subject' where wr_id = '$comment_id' ";
sql_query($sql3);

 

덕분에 학생이 신청을 함과 동시에 학생 데이터 값의 wr_subject에 해당 과목명이 들어와 select wr_subject from 테이블 where wr_3 = '010-xxxx-xxxx'; 라는 쿼리를 날렸을때 과목명이 잘 나왓습니다.

 

그러나 강의 시간을 출력해야 할 때는 시간의 상세 정보가 담긴 컬럼이 wr_1이고 학생의 상세 정보가 담긴 컬롬 또한 wr_1이라

select substring_index(substring_index(wr_1,'|',3),'|',-1) as time from 테이블 where wr_3 = '010-xxxx-xxxx'; 을 입력하면

개설강의의 상세정보가 아닌 학생의 상세정보가 나와서 강의 시간을 출력하기가 어렵더라구요

 

그래서 wr_subject를 입력했을 때와 마찬가지로 코멘트를 달때 wr_5에 개설된 강의의 상세내용이 update되도록 아래와 같은 쿼리를 짜봤는데

$sql4 = "update 테이블 set wr_5 = '$wr_1' where wr_id = '$comment_id' ";
sql_query($sql4);

 

아무런 변화 없이 null만 보여지고 있습니다.

 

그래서 이번엔 테이블에서 개설강의의 컬럼만 빼와서 테이블2를 만들고

$sql4 = "update 테이블 set wr_2 = (select wr_1 from 테이블2 where wr_id = '$wr_id') where wr_id='$comment_id'";
이런식으로 하니까 wr_2에는 들어와 지거든요

 

그런데 문제는 강의를 개설할때마다 직접 테이블2를 새로 생성해서 해야 하는데 일일이 하기 번거로울꺼 같고 wr_subject 때에는 수강신청할때 해당 과목이 잘 들어와지는데 왜 복사할 wr_1의 내용이 wr_2에 안들어가지는지 잘 모르겠습니다. 가르침을 부탁드립니다 ㅠ

 

이 질문에 댓글 쓰기 :

답변 2

$sql4 = "update 테이블 set wr_5 = '$wr_1' where wr_id = '$comment_id' ";
sql_query($sql4);

위 쿼리를 실행전.. 코멘트 부모글의 wr_1 필드의 값을 $wr_1 변수에 우선 담아둔후

업데이트를 처리하셔야 null 이 되지 않습니다.

 

내용문맥상으로 테이블2를 만들 필요는 없어보이네요. 

 

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


$wr_3 = $_REQUEST['cellphone_1']."-".$_REQUEST['cellphone_2']."-".$_REQUEST['cellphone_3'];

$wr_1 = "$wr1_0|$wr1_1|$wr1_2|$wr1_3|$wr1_4|$wr1_5|$wr1_6|$wr1_7|$wr1_8|$wr1_9";
$sql1  = " update $write_table set wr_1 = '$wr_1', wr_3 = '$wr_3', wr_5 = '$wr_5' where wr_id = '$comment_id' ";
sql_query($sql1);

$sql2  = "update 테이블 set wr_10 = ( select case when wr_total = wr_comment then '3' else '2' end from  (select substring_index(substring_index(wr_1, '|', 8), '|', -1) as wr_total, wr_comment from 테이블 where wr_id = '$wr_id') a) where wr_id = '$wr_id'";
sql_query($sql2);

$sql3 = "update 테이블 set wr_subject = '$wr_subject' where wr_id = '$comment_id' ";
sql_query($sql3);

$wr_1 = $_REQUEST['wr_1'];
$sql4 = "update 테이블 set wr_5 = '$wr_1' where wr_id = '$comment_id' ";
sql_query($sql4);
?>

말씀하신 부분이 이걸 말하시는건가요? wr_1값을 $wr_1변수에 담는다고 저렇게 해봤는데 맞는건지 모르겠습니다 ㅠ 우선 이렇게 해도 잘 가져오지를 않네요 ㅠ

이상태에서는 답변을 드려도 이해를 못하시거나 문제해결이 되지 않을 듯 싶네요.

그냥 답만 알려드리자면..
$tmp = sql_fetch(" select wr_1 from 테이블 where wr_id='$wr_id' and wr_is_comment<>1 ");
$wr_1 = $tmp['wr_1'];
와 같이 되어야 합니다.

자세히 보기가 좀 애매해서...그냥 이렇게 하시면 될 듯 한데요.

코멘트의 경우 wr_parent값이 게시물의 wr_id값이니

 

select substring_index(substring_index(wr_1,'|',3),'|',-1) as time from 테이블 where wr_id = (select wr_parent where wr_3 = '010-xxxx-xxxx'); 

 

요런식으로 처리 하면 될 듯 합니다.

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

회원로그인

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