체크박스의 특성때문입니다.
체크박스를 컨트롤배열로 생성한 경우 체크된 값만 넘어갑니다.
따라서 아래와 같은 경우를 들 수 있습니다.
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] =>
) |
|
|