웹모아
웹모아[가입] 로그인 / 회원가입   검색     


  
폼체크-예제
 

check박스 배열 넘기기
2006-06-28 23:37:55 댓글:(0)   조회:8771
 

체크박스의 특성때문입니다. 
체크박스를 컨트롤배열로 생성한 경우 체크된 값만 넘어갑니다. 
따라서 아래와 같은 경우를 들 수 있습니다. 

input.html 
-------------------------------------------------------- 
<HTML> 
<HEAD> 
<TITLE>입력</TITLE> 
</HEAD> 

<BODY> 
<form name="form" method="post" action="result.php"> 

<input type='checkbox' name='check[]' value='0' checked> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type='checkbox' name='check[]' value='1'> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type='checkbox' name='check[]' value='2' checked> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type='checkbox' name='check[]' value='3'> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type="button" value="전송" onclick="form.submit();" 
</form> 
</BODY> 
</HTML> 
--------------------------------------------------------- 

result.php 
--------------------------------------------------------- 
<?php 
$check = $_POST['check']; 
$agree_over = $_POST['agree_over']; 

print_r($check); 
print_r($agree_over); 
?> 
--------------------------------------------------------- 

위의 예제를 실행시켜보면... 

Array 

    [0] => 0 
    [1] => 2 

Array 

    [0] => 
    [1] => 
    [2] => 
    [3] => 


분명 컨트롤은 2개씩 네쌍(8개)이지만... 
넘어온 값은 6개 입니다. 

checkbox의 경우는 선택된 값만 넘어온 것을 볼 수 있습니다. 
또 자세히 보면 분명 첫번째(0번지)와 세번째(2번지)가 체크되어있지만 
array에서는 0번지와 1번지로 나타나고 있습니다. 

따라서 님께서 작성하신 php구문에서의 for문을 돌리는것은 잘못된 것이 됩니다. 
제 생각으로는 input.html에서 값을 넘길 때 체크박스 컨트롤배열에서 
체크된것과 그렇지않은것들을 자바스크립트로 처리해 넘기는것이 
바람직하다고 봅니다. 

아래와 같이 할 수 있겠죠... 

input.html 
--------------------------------------------------------- 
<HTML> 
<HEAD> 
<TITLE>입력</TITLE> 
</HEAD> 

<script language="javascript"> 
function sendit(){ 
    var chk_box = form.check; 
    var len = chk_box.length; 

    var str=""; 
    var delemeter; 

    for(var i=0; i<len; i++){ 
        delemeter = (i<len-1) ? ',' : ''; 
        if(chk_box[i].checked) str += chk_box[i].value+delemeter; 
        else str += delemeter; 
    } 

    form.check_str.value=str; 

    form.submit(); 

</script> 

<BODY> 
<form name="form" method="post" action="result.php"> 

<input type='hidden' id="check_str" name='check_str'> 

<input type='checkbox' name='check' value='0' checked> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type='checkbox' name='check' value='1'> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type='checkbox' name='check' value='2' checked> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type='checkbox' name='check' value='3'> 
<input type = 'text' name='agree_over[]' value='' size='1'> 

<input type="button" value="전송" onclick="sendit();"> 
</form> 
</BODY> 
</HTML> 
--------------------------------------------------------- 

result.php 
--------------------------------------------------------- 
<?php 
$check = explode(',',$_POST['check_str']); 
$agree_over = $_POST['agree_over']; 

print_r($check); 
print_r($agree_over); 
?> 
--------------------------------------------------------- 

실행시켜보면... 

Array 

    [0] => 0 
    [1] => 
    [2] => 2 
    [3] => 

Array 

    [0] => 
    [1] => 
    [2] => 
    [3] => 
)
. 


[이전글]  영문 대문자 입력
[다음글]  파일 업로드 전... 파일크기 확인


 
댓글쓰기는 회원(로그인 하신분) 이상 가능합니다.


 댓글 (0)

  
폼체크-예제
페이지: 1 / 3   

 특수문자 입력금지, 숫자만 입력 가능 등등 유용한 스크립트
열람:3635   2015.12.02


 콤보박스/리스트박스를 이용한 사이트이동
(푸른산) 열람:3461   2011.12.11


 텍스트 입력 테그에 이미지로 설명문 넣기
열람:2800   2008.12.19


 자바스크립트 셀렉트박스에 옵션추가 selectbox option add - javascript
열람:3863   2008.08.20


 텍스트폼에 숫자만 입력되게 하기 (이벤트) IE FF
열람:2999   2008.08.16


 입력버턴의 값이 1인 것의 갰수 구하기
열람:2679   2007.10.21


 Radio button value 값을 보려면?
열람:3098   2007.10.20


 라디오버튼 체크여부(유무) 확인기능
댓글:(1) 열람:3001   2007.10.20


 아이디 체크
열람:3636   2007.10.04


 한글만 입력가능하게
(홈마스타) 열람:3746   2007.08.11



[1]  [2]  [3]  

복수단어 검색은 공백(space)로 구분해 주세요.




 
최근 글 [손님]
 
인기 글 [손님]
[홈마스타] 카네기의 지도론