테스트 사이트 - 개발 중인 베타 버전입니다

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

바다웹호스팅 10년 전 조회 8,338

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개

채택된 답변
+20 포인트
10년 전

그누보드에서 여분필드 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);

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

바다웹호스팅
10년 전
그렇군요.. 다른 이름으로 하는 방법이 있군요. 감사.
그누보드좋아요
10년 전
굿.... 쩔었습니다.

댓글을 작성하려면 로그인이 필요합니다.

s
2년 전

와... 진작 검색 해볼껄

 

다 해결한뒤에 같은 문제를 해결한 방법이 있었다니...

왜 배열이 안넘어가는지 소스 하나 하나 다 열어봤는데 ㅜ.ㅜ

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

4년 전

이것때문에 저도 고생하고있었는데 본글과 뎃글내용으로 깔끔하게 처리했습니다.

감사합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10년 전

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

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

P
10년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

바다웹호스팅
10년 전
예 이해가 갑니다.

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인