질문 Q #10459
checkbox 값 배열로 받아온것 받는 방법.
치혼혈귀 2013-04-16 10:07:10
일반 php문법이라면

<input type='checkbox' name='favSports[]' value='1'>축구
<input type='checkbox' name='favSports[]' value='2'>농구
<input type='checkbox' name='favSports[]' value='3'>야구
<input type='checkbox' name='favSports[]' value='4'>족구

이렇게 name 값뒤에 [] 이녀석을 붙여주면 배열로 넘어간다.

------------------------------------------------------
받는 페이지에선

for($i=0 ; $i<sizeof($_POST[favSports]) ; $i++){
echo('$_POST[favSports][$i]');
}

로 가져오면되는데

codeigniter  에서는

$this->input->post('favSports');
이런식으로 값을 가져오는데 배열로 어떻게 가져올 방법 없을까요????

$this->input->post('favSports')[$i]; 이런식으론 못가져오더라구요

고수분들의 답변 바랍니다.

답변 6
#1 변종원(웅파) 2013-04-16 10:11:50
$arr = $this->input->post('favSports');

어렵게 생각하면 어렵고 쉽게 생각하면 쉽습니다. 기존 방식에서도 저렇게 사용했습니다.
잘 생각해보세요. ci가 php와 완전 다른 것이 아닙니다. 
#2 인스카 2013-04-16 10:17:36
덧붙이면... 아마 $this->input->post('favSports')[$i];  이런식의 접근이 C#과 같은 다른 언어에서는 가능할겁니다. 저도 습관적으로 시도했다가 안 된 것 같네요.. PHP 언어의 문제라고 보는 시각도 있는 것 같고.. 
그냥 참고만 하세요^^
#3 치혼혈귀 2013-04-16 10:25:39

제가꼼꼼히 찾아보질 못했네요

해결방법 찾았습니다. 어떤분이 다른글에서 댓글남겨주신게 있네요
결론은 implode함수를 사용하는 것입니다.

## 컨트롤러 ##
$bsn_var = implode(",",$this->input->post('chkId'));
이런식으로 받으면 1,2,3,4 이런식으로 출력이 됩니다.

아래는 그냥 체크박스를 배열로 받은거 보여주는거구요

1.<form name="form1" acti>"exe" method="post">

2.<input type="checkbox" name="chkId[]" id="chkId" value="1" />
3.<input type="checkbox" name="chkId[]" id="chkId" value="2" />
4.<input type="checkbox" name="chkId[]" id="chkId" value="3" />
5.<input type="checkbox" name="chkId[]" id="chkId" value="4" />
6.<input type="submit" value="확인" />
7.</form>



 

#4 소울펨 2013-04-17 11:22:53
 치혼님 왜 implode 를 한건가요? 의미가 없어보여서요 ;;; 이건 태클이 아니라 궁굼해서용
#5 소울펨 2013-04-17 11:25:39
 implode 해서 배열을 다른 페이지로 보낼려고 하는걸까요?

질문하공 약간 차이가 있는 해결 방식이라 ....서요
#6 치혼혈귀 2013-04-18 17:06:35
 아 제가 깊게 알지 못하고 덧글 남겼었네요

그냥 

sealize() 로 보낸 배열을

$변수 = $this->input->post('받아오는변수명');

으로 받으면 같은 이름은 배열로 받아지네요... 

디버깅하면서 마지막꺼만 나오길래 마지막거만 받아오는 줄 알고 제가 실수를 했습니다.

그리고 소울팸님에 대한 답변은 

제가 모델에 쿼리를 작성하면서 배열을 문장형태로 ex) and a = 'xxxx' and a = 'yyyy' 이런 형태로 저장을 한 후에

넘겨서 좀 더 쉽게 사용하기 위해 사용한 것이었습니다. 

더 궁금하신점 있으시면 덧글남겨주세요