웹모아
웹모아[손님] 검색   로그인    


 
폼체크-예제
 


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


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

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 / 1   


   특수문자 입력금지, 숫자만 입력 가능 등등 유용한 2740
   콤보박스/리스트박스를 이용한 사이트이동(푸른산)2796
   텍스트 입력 테그에 이미지로 설명문 넣기2135
   자바스크립트 셀렉트박스에 옵션추가 selectbox3064
   텍스트폼에 숫자만 입력되게 하기 (이벤트) IE F2348
   입력버턴의 값이 1인 것의 갰수 구하기1963
   Radio button value 값을 보려면?2397
   라디오버튼 체크여부(유무) 확인기능(1) 2403
   아이디 체크2062
   한글만 입력가능하게(홈마스타)2169
     [RE] 한글과 숫자만 입력가능하게(홈마스타)2341
   한글 중에 미완성된 글자가 있는지 확인하려면(홈마스타)2622
   금지 메일 도메인 검사(홈마스타)2206
   회원가입시 메일정보 체크하크하기(홈마스타)2038
   객체 존재여부 확인(홈마스타)2259
   필드입력체크하기(홈마스타)2190
   영문 대문자 입력(홈마스타)2436
check박스 배열 넘기기(홈마스타)5612
   파일 업로드 전... 파일크기 확인(홈마스타)2666
   이메일, 회원아이디, 주민등록번호 체크(홈마스타)2243
   회원가입시 사용하는 폼체크 예제(홈마스타)2167
   자바스크립트 공통함수(상큼한여)4824
≪ [1]   ≫

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



 
최근 글
[손님]
97
87
243
432
694
393
434
248
369
3823
921
963
1230
982
4286
 
인기 글
[손님]
3987
3077
3708
10663
3289
11785
4595
3260
3417
3965
4371
5545
8293
3180
3247