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


  
폼체크-예제
 


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

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

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


      [RE] 한글과 숫자만 입력(홈마스타) 2394
    한글 중에 미완성된 글자가 (홈마스타) 2912
    금지 메일 도메인 검사(홈마스타) 2269
    회원가입시 메일정보 체크하크(홈마스타) 2113
    객체 존재여부 확인(홈마스타) 2338
    필드입력체크하기(홈마스타) 2243
    영문 대문자 입력(홈마스타) 2735
 check박스 배열 넘기기(홈마스타) 6241
    파일 업로드 전... 파일크(홈마스타) 2729
    이메일, 회원아이디, 주민등(홈마스타) 2298

  [1]  [2]  [3]  

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



 
최근 글
[손님]





인기 글
[손님]