게시판 추가필드 사용시 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개 / 댓글 3개
그누보드에서 여분필드 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가 들어갈 수는 없기에, 문자열처리를 하고 있는 부분입니다.
답변을 작성하려면 로그인이 필요합니다.