db 컬럼내에 들어있는 배열값을 수정하려고 합니다

db 컬럼내에 들어있는 배열값을 수정하려고 합니다

QA

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']);

 

글쓰고 난뒤에 저도 보니깐 db를 추출을 안했더라구요 근데 제가 추출한 방법이 잘못되었네요 ㅎㅎ

안그래도 3~5번행 데이터에 0/0/0/0 을 강제로 집어넣고 하면 정상적으로 1/0/0/0 이런식으로 되는데 왜 안되나 했네요

감사합니다 균이님!

그 제가 $arr_proc 라는 변수를 추가 한게 자바스크립트로 값을 넘겨줘서 db를 업데이트 하는데 lc_proc_contents 도 있고 lc_proc_film 도 있어서 이게 필요한거거든요

그래서 버튼을 눌러서 업데이트 파일로 넘겨줄때 $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 를 반복하는 이유가 뭔가요?

  

아 제가 다른 소스를 참고 하면서 하다보니깐 필요 없이 2번 반복 되었네요 ㅎ
이제 업데이트를 할려고 보니깐 제가 $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);

으로 하니 안되네요....

너무 많은 질문을 드려서 정말 정말 죄송합니다 ㅠㅠ

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

회원로그인

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