게시판 추가필드 사용시 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가 들어갈 수는 없기에, 문자열처리를 하고 있는 부분입니다.
저장값이 제대로 들어가라고 넣어둔것 같긴 합니다만.. 배열일때는 문제가 생기게 되있었군요;
implode를 write_update.head.skin.php에서 하실테니 그 include_once() 위치를 저 소스 위로 옮기는게 맞다고 보여지네요.
그렇게 위치만 바꿔주면 is_array체크는 안하셔도 될듯합니다.
이것때문에 저도 고생하고있었는데 본글과 뎃글내용으로 깔끔하게 처리했습니다.
감사합니다.
와... 진작 검색 해볼껄
다 해결한뒤에 같은 문제를 해결한 방법이 있었다니...
왜 배열이 안넘어가는지 소스 하나 하나 다 열어봤는데 ㅜ.ㅜ