웹모아 
웹모아 로그인   
웹모아
 
폼체크-예제
 


check박스 배열 넘기기
  2006-06-28 23:37:55 조회:5506
글자수: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
     콤보박스/리스트박스를 이용한 사이트이동(푸른산)2791
     텍스트 입력 테그에 이미지로 설명문 넣기2130
     자바스크립트 셀렉트박스에 옵션추가 selectbox3047
     텍스트폼에 숫자만 입력되게 하기 (이벤트) IE F2344
     입력버턴의 값이 1인 것의 갰수 구하기1960
     Radio button value 값을 보려면?2393
     라디오버튼 체크여부(유무) 확인기능(1) 2386
     아이디 체크2060
     한글만 입력가능하게(홈마스타)2165
       [RE] 한글과 숫자만 입력가능하게(홈마스타)2340
     한글 중에 미완성된 글자가 있는지 확인하려면(홈마스타)2604
     금지 메일 도메인 검사(홈마스타)2202
     회원가입시 메일정보 체크하크하기(홈마스타)2035
     객체 존재여부 확인(홈마스타)2258
     필드입력체크하기(홈마스타)2187
     영문 대문자 입력(홈마스타)2432
  check박스 배열 넘기기(홈마스타)5507
     파일 업로드 전... 파일크기 확인(홈마스타)2663
     이메일, 회원아이디, 주민등록번호 체크(홈마스타)2237
     회원가입시 사용하는 폼체크 예제(홈마스타)2164
     자바스크립트 공통함수(상큼한여)4731
≪ [1]   ≫

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



공지사항

 
인기 글
3186
3396
3058
  [홈마스타] 한글 유니코드 표
3250
4021
3580
3435
  [홈마스타] 자동링크
3043
4398
3037
9982
5921
4446
11648
4324
 
최근 글
82
231
410
259
250
160
229
3185
837
851
1025
875
4123
3432
3477