게시판 추가필드 사용시 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);
답변에 대한 댓글 2개
댓글을 작성하려면 로그인이 필요합니다.
와... 진작 검색 해볼껄
다 해결한뒤에 같은 문제를 해결한 방법이 있었다니...
왜 배열이 안넘어가는지 소스 하나 하나 다 열어봤는데 ㅜ.ㅜ
댓글을 작성하려면 로그인이 필요합니다.
저장값이 제대로 들어가라고 넣어둔것 같긴 합니다만.. 배열일때는 문제가 생기게 되있었군요;
implode를 write_update.head.skin.php에서 하실테니 그 include_once() 위치를 저 소스 위로 옮기는게 맞다고 보여지네요.
그렇게 위치만 바꿔주면 is_array체크는 안하셔도 될듯합니다.
댓글을 작성하려면 로그인이 필요합니다.
기본적으로 wr_1과 같은 확장변수는 string 형태로 db에 직접 기록됩니다. SQL구문에 Array가 들어갈 수는 없기에, 문자열처리를 하고 있는 부분입니다.
답변에 대한 댓글 1개
하지만,만약 문자열로 넘어온게 아닌건, 굳이 일부러 문자열로 변경해버리기 까지 할건 없을거 같습니다.
개발자가 일부러 배열로 넘기면.. 어짜피 sql 에 안들어가니 문자열로 강제로 바꾸나 안바꾸나
안들어가긴 마찬가지 같군요.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인