db 컬럼내에 들어있는 배열값을 수정하려고 합니다 채택완료
내용관리를 응용하여 db내용을 수정하는 페이지를 만들고 있습니다.
테이블에는 id값과 lc_proc_contents라는 컬럼이 있고 이 컬럼안에 데이터가 0/0/0/0 이런식으로 들어가 있습니다.
컬럼을 더 늘리기 싫어서 저렇게 처리 했는데 상당히 일이 안 풀리네요 ㅠ
목표는 리스트상에서 버튼을 클릭하면 해당 id값을 가지는 행에 있는 lc_proc_contents 라는 컬럼안 배열 데이터를 변경하고자 합니다
현재 row의 id값과 변경하여야할 값, 변경해야할 순서,커럼이름을 가지고 왔습니다.
이제 update만 치면 되는데.... 컬럼안쪽으로 데이터가 들어가긴 하는데 배열대로 바뀌는게 아니라 그냥 다 지워버리고 하나의 데이터만 들어가버리네요
ex)0/0/0 등이 들어가 있을때 첫번째껄 1로 바꾸라고 생각하고 짯으나 전체가 삭제되고 1 하나만 들어가버림...
작업칼럼명 기존 필드값 변경 필드값
-------------------------------------------
wr_7 0/0/0/0/0/0/0 1/0/0/0/0/0/0
으로 되어야 하는게
작업칼럼명 기존 필드값 변경 필드값
-------------------------------------------
wr_7 0/0/0/0/0/0/0 1
으로 되어 버리네요 ㅋ;;;
아래는 제가 구상한 sql 쿼리문 입니다.
$arr_level = 배열에서 몇번째에껄 변경할지
$arr_value = 변경할 값
$arr_proc = 컬럼이름
이렇게 구성되어 있습니다...
</p><p><?php
include_once('./_common.php');</p><p>$lc_proc_contents_arr = explode("/",$arr_proc);
$lc_proc_contents_arr[$arr_level] = $lc_proc_contents_arr[$arr_level] = $arr_value;
$lc_proc_contents = implode(",",$lc_proc_contents_arr);</p><p>$sql = " update g5_cmslecode
set lc_proc_contents = '$lc_proc_contents' where lc_id = '$lc_id' ;";
sql_query($sql);</p><p>goto_url("./lec_proc.php");
?></p><p> </p><p>
문제점이 뭔지 찾아봐주시면 감사하겠습니다.
디자이너라.. 한계가 오는거 같네요 부탁드리겠습니다!
답변 2개
$arr_proc 라는 필드 이름만 전달 하고 DB에서 해당 필드 값을 추출하지않았으니
$lc_proc_contents_arr 에는 아무 값도 들어가지 않습니다
그러니 implode로 합치면 값이 하나 밖에 없는 것입니다
2번행 다음에 추가하세요($arr_proc 라는 변수를 굳이 설정해서 사용할 필요가 없습니다)
$row= sql_fetch("select lc_proc_contents from g5_cmslecode where lc_id = '$lc_id' ");
3번행 수정
$lc_proc_contents_arr = explode("/",$row['lc_proc_contents']);
답변에 대한 댓글 2개
그래서 버튼을 눌러서 업데이트 파일로 넘겨줄때 $arr_proc = $lc_proc_contents으로 처리 하는중입니다.
위의 내용을
$row= sql_fetch("select '$arr_proc' from g5_cmslecode where lc_id = '$lc_id' ");
$lc_proc_contents_arr = explode("/",$row['$arr_proc']);
$lc_proc_contents_arr[$arr_level] = $lc_proc_contents_arr[$arr_level] = $arr_value;
$lc_proc_contents = implode("/",$lc_proc_contents_arr);
이렇게 수정해봤는데 정상적으로 수정이 안되네요 ㅎㅎ;; 산넘어 산입니다 ㅠ_ㅠ
편법으로 파일 2개 만들어서 각각 쓰게 하면 되긴 하는데 그래도 하나의 파일로 처리 하는게 더 깔끔할꺼 같은데 어떻게 해야 할까요...
댓글을 작성하려면 로그인이 필요합니다.
$row= sql_fetch("select $arr_proc from g5_cmslecode where lc_id = '$lc_id' "); <--작은따옴표 제거
$lc_proc_contents_arr = explode("/",$row[$arr_proc]);
$lc_proc_contents_arr[$arr_level] = $lc_proc_contents_arr[$arr_level] = $arr_value; <--동일한 $lc_proc_contents_arr 를 반복하는 이유가 뭔가요?
답변에 대한 댓글 1개
이제 업데이트를 할려고 보니깐 제가 $arr_proc를 넘길때 $lc_proc_contents 이렇게 앞에 $붙여서 바로 넘겨주다보니 업데이트 칠땐 $를 빼고 넣어야 하는데
$lc_fild = substr($arr_proc,1,30);
$row= sql_fetch("select $arr_proc from g5_cmslecode where lc_id = '$lc_id' ");
$lc_proc_contents_arr = explode("/",$row[$arr_proc]);
$lc_proc_contents_arr[$arr_level] = $arr_value;
$lc_proc_contents = implode("/",$lc_proc_contents_arr);
$sql = " update g5_cmslecode set '$lc_fild' = '$lc_proc_contents' where lc_id = '$lc_id' ;";
sql_query($sql);
으로 하니 안되네요....
너무 많은 질문을 드려서 정말 정말 죄송합니다 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
안그래도 3~5번행 데이터에 0/0/0/0 을 강제로 집어넣고 하면 정상적으로 1/0/0/0 이런식으로 되는데 왜 안되나 했네요
감사합니다 균이님!