게시판 추가필드 사용시 array 배열 값을 전달할 때

게시판 추가필드 사용시 array 배열 값을 전달할 때

QA

게시판 추가필드 사용시 array 배열 값을 전달할 때

본문

wr_1 ~ wr_10 까지추가 필드를 사용하면서,

배열을  write.skin.php  에서 폼에 name="wr_1[]" 와 같이

배열로 해서 저장하려고 

스킨에서 write_update.skin.php 에서 $_POST['wr_1'] 를 implode해서 저장하려고 보니

배열값이 사라져 버려서

 

저장이 안되는군요

 

bbs/write_update.php  파일에서 

 

 아래 부분 때문이었습니다. 그래서  97 라인을 아래와 같이 

 

 94 for ($i=1; $i<=10; $i++) {

 95     $var = "wr_$i";

 96     $$var = "";

 97     if (isset($_POST['wr_'.$i]) && !is_array($_POST['wr_'.$i]) && settype($_POST['wr_'.$i], 'string')) {

 98         $$var = trim($_POST['wr_'.$i]);

 99     }

100 }

 

와 같이 기존에 없는 && !is_array($_POST['wr_'.$i]) 

 

를 넣어서 배열일경우에는 trim 을 안쓰게 수정하니

값을 배열로 활용은 가능합니다.

 

일부러 배열 전달을 못하게한건가요? 아니면 제가모르는 다른 방법이 잇는건가요? 

 

이 질문에 댓글 쓰기 :

답변 5

그누보드에서 여분필드 name은 배열이 아니라는 전제를 두고 있으니

배열로 사용하는 것은 여분필드와는 다른 이름으로 name을 붙이고 write_update.head.skin.php에서

implode 해주는 것이 bbs 소스를 수정하지않고 하는 일반적인 방법입니다

 

폼에서

<input name=wr1[]>

<input name=wr1[]>

<input name=wr1[]>

 

write_update.head.skin.php에서

$wr_1 = implode('||', $wr1);

 

 

기본적으로 wr_1과 같은 확장변수는 string 형태로 db에 직접 기록됩니다. SQL구문에 Array가 들어갈 수는 없기에, 문자열처리를 하고 있는 부분입니다. 

예 이해가 갑니다.

하지만,만약 문자열로 넘어온게 아닌건,  굳이 일부러 문자열로 변경해버리기 까지 할건 없을거 같습니다.

개발자가 일부러 배열로 넘기면.. 어짜피 sql 에 안들어가니  문자열로 강제로 바꾸나 안바꾸나
안들어가긴 마찬가지 같군요.

저장값이 제대로 들어가라고 넣어둔것 같긴 합니다만.. 배열일때는 문제가 생기게 되있었군요;

implode를 write_update.head.skin.php에서 하실테니 그 include_once() 위치를 저 소스 위로 옮기는게 맞다고 보여지네요.

그렇게 위치만 바꿔주면 is_array체크는 안하셔도 될듯합니다.

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

회원로그인

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