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 = 컬럼이름
이렇게 구성되어 있습니다...
<?php
include_once('./_common.php');
$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);
$sql = " update g5_cmslecode
set lc_proc_contents = '$lc_proc_contents' where lc_id = '$lc_id' ;";
sql_query($sql);
goto_url("./lec_proc.php");
?>
문제점이 뭔지 찾아봐주시면 감사하겠습니다.
디자이너라.. 한계가 오는거 같네요 부탁드리겠습니다!
!-->답변 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']
);
$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 를 반복하는 이유가 뭔가요?