웹모아 
웹모아[손님] 검색 로그인  
웹모아
 
폼체크-예제
 


check박스 배열 넘기기
  2006-06-28 23:37:55 조회:5520
글자수:1651


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

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   


     특수문자 입력금지, 숫자만 입력 가능 등등 유용한 2738
     콤보박스/리스트박스를 이용한 사이트이동(푸른산)2792
     텍스트 입력 테그에 이미지로 설명문 넣기2130
     자바스크립트 셀렉트박스에 옵션추가 selectbox3051
     텍스트폼에 숫자만 입력되게 하기 (이벤트) IE F2346
     입력버턴의 값이 1인 것의 갰수 구하기1960
     Radio button value 값을 보려면?2393
     라디오버튼 체크여부(유무) 확인기능(1) 2394
     아이디 체크2060
     한글만 입력가능하게(홈마스타)2165
       [RE] 한글과 숫자만 입력가능하게(홈마스타)2340
     한글 중에 미완성된 글자가 있는지 확인하려면(홈마스타)2612
     금지 메일 도메인 검사(홈마스타)2203
     회원가입시 메일정보 체크하크하기(홈마스타)2035
     객체 존재여부 확인(홈마스타)2258
     필드입력체크하기(홈마스타)2188
     영문 대문자 입력(홈마스타)2434
  check박스 배열 넘기기(홈마스타)5521
     파일 업로드 전... 파일크기 확인(홈마스타)2663
     이메일, 회원아이디, 주민등록번호 체크(홈마스타)2240
     회원가입시 사용하는 폼체크 예제(홈마스타)2164
     자바스크립트 공통함수(상큼한여)4749
≪ [1]   ≫

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



공지사항
[손님]

 
인기 글
[손님]
3529
3245
10518
11268
4026
10396
3576
3576
5231
3139
4567
3341
3213
4914
3062
 
최근 글
[손님]
136
262
477
279
293
177
252
3201
851
868
1039
890
4158
3450
3517