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


check박스 배열 넘기기
  2006-06-28 23:37:55 조회:5560


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

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

 
  특수문자 입력금지, 숫자만 입력 가능 등등 유용한
<center><form onSubmit="return false;">이곳에는 특수문자를 입력 할 수 없읍니다: (예 !@#$%^&* etc)<br><textarea rows=2 cols=20 name=comments onKeypress="if ((event.keyCode > 32 &a조회(2739)          



  콤보박스/리스트박스를 이용한 사이트이동
option속성 select태그안의 항목을 배열형태로 정보를 가지고 있습니다. options.length : 항목의 갯수를 알아냅니다. options.SelectedIndex : 선택된 항목의 인덱스값. 선택된 항목이 없으면 '-1'을 반환. options[인덱스번호].defaultSelect(푸른산)     조회(2793)          



  텍스트 입력 테그에 이미지로 설명문 넣기
function ClearInputBox(type) { if (type == "p_userid") { document.loginForm.p_userid.style.backgroundImage = ''; } else if (type == "p_passwd") { 조회(2132)          



  자바스크립트 셀렉트박스에 옵션추가 selectbox
function test(k, v){ if(k == ""){ alert("텍스트 상자에 값을 넣어라."); return; } if(v == ""){ alert("텍스트 상자에 값을 넣어라."); return; } var obj_node = document.createElement("option"); 조회(3054)          



  텍스트폼에 숫자만 입력되게 하기 (이벤트) IE F
주민등록번호 입력란에 하이픈 부호(-)를 입력한다거나 금액 입력란에 콤마부호(,)나 마침표(.)를 입력하는 것은 흔히 할 수 있는 실수다. 아래 자바스크립트는 해당 폼에 숫자만 입력되고 그 이외의 문자가 입력될 때 아예 입력이 안 되도록 무효화시키는 스크립트다. 코딩할 때는 인터넷 익스플로러(IE)와 파이어폭스(FF) 모두 적용 가능토록 하조회(2347)          



  입력버턴의 값이 1인 것의 갰수 구하기
function chk() { var inputs = document.getElementsByTagName("input"); var radios = new Array(); var idx = 0; alert(inputs.length); for(var i=0;i조회(1961)          





  Radio button value 값을 보려면?
라디오 버튼의 경우 똑같은 이름으로 여러개가 있는 경우 이는 자동으로 배열로 처리됩니다. 따라서 document.form.comm_stat_flag 는 이미 배열로 되어 있는 상태이고 배열.value 라는 것은 없기 때문에 undifind 가 나오게 되는겁니다. 그래서 배열로 접근을 하셔야 하는데 그 방법은 이미 아시겠지만 document.for조회(2394)          



  라디오버튼 체크여부(유무) 확인기능
function chk() { var inputs = document.getElementsByTagName("input"); var radios = new Array(); var idx = 0; for(var i=0;i댓글(1)     조회(2400)          



  아이디 체크
function idcheck() { var err; err=0; mid = document.registform.mem_userid; searchko = mid.value; for (i = 0 ; i < searchko.length ; i++) { sko = searchko.charAt(i); if 조회(2061)          



  한글만 입력가능하게
function hangul() { if((event.keyCode < 12592) || (event.keyCode > 12687)) event.returnValue = false } (홈마스타)     조회(2166)          



    [RE] 한글과 숫자만 입력가능하게
function hangul() { if( !(event.keyCode>=48 && event.keyCode 12687))) event.returnValue = false } (홈마스타)     조회(2341)          



  한글 중에 미완성된 글자가 있는지 확인하려면
자바스크립트를 사용하면 됩니다. 다음 소스코드를 참조하세요, 그누보드/js/wrest.js 파일에서 발췌한 내용입니다. // 한글인지 검사 (자음, 모음만 있는 한글은 불가) function wrestHangul(fld) { if (!wrestTrim(fld)) return; var p(홈마스타)     조회(2620)          



  금지 메일 도메인 검사
// 금지 메일 도메인 검사 function prohibit_email_check(email) { email = email.toLowerCase(); var prohibit_email = "yahoo.co.kr,yahoo.com"; var s = prohibit_email.split(","); var tmp = e(홈마스타)     조회(2204)          



  회원가입시 메일정보 체크하크하기
회원 가입 메일 체크 스크립트 if(!email_chk(form.email.value)){ // 함수 email_chk를 호출한다 form.email.select(); return; } function email_chk(email) { var invalidChars = "\"|&;!*\'\(홈마스타)     조회(2036)          



  객체 존재여부 확인
function chk(val){ f=document.frm; o=eval("f."+val); try{ if(o.value!='') alert(o.value); else alert('값이 입력되어있지 않습니다.'); }catch(e){alert(e+' 객체가 존재하지 않습니다')} } a: (홈마스타)     조회(2259)          




≪ [1]  [2]   ≫

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


 
최근 글
[손님]
164
292
506
302
316
194
280
3276
870
888
1071
912
4182
3482
3544
 
인기 글
[손님]
6419
3270
4327
4909
  [홈마스타] oledb 접근 오류
4586
5202
3588
4979
3950
4077
3790
5131
3127
3056
3262