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



  
폼체크-예제
 

check박스 배열 넘기기
2006-06-28 23:37:55 댓글:(0)   조회:6957
. 
체크박스의 특성때문입니다. 
체크박스를 컨트롤배열로 생성한 경우 체크된 값만 넘어갑니다. 
따라서 아래와 같은 경우를 들 수 있습니다. 

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)


폼체크-예제
페이지: 2 / 2   

    필드입력체크하기(홈마스타) 2298
    영문 대문자 입력(홈마스타) 3108
 check박스 배열 넘기기(홈마스타) 6958
    파일 업로드 전... 파일크(홈마스타) 2758
    이메일, 회원아이디, 주민등(홈마스타) 2326
    회원가입시 사용하는 폼체크 (홈마스타) 2854
    자바스크립트 공통함수(상큼한여) 8215

  [1]  [2]  


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



 
최근 글 [손님]




 
인기 글 [손님]
[홈마스타] 운전면허 취득절차
[홈마스타] 카네기의 지도론
[김준수] (1) 모의고사 풀이