묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
으악 체크박스 다시한번 ㅠㅠ
2002.04.17 14:57
체크박스처리 예제입니다. 참고하셔서 응용해보세요.
자바스크립트는 대충 주석을 같이 달았습니다.
<SCRIPT LANGUAGE="JavaScript">
<!--
function check()
{
var check_value=""; // 체크 박스의 값을들 임시로 담아둘 변수
for(i=0;i<form.elements.length;i++) // 폼 엘리먼트의 갯수만큼 실행합니다.
{
if (form.elements[i].type=="checkbox") // 체크박스만을 검색합니다.
if (form.elements[i].checked==true) // 체크박스가 체크되어 있는지 살핍니다.
check_value+=form.elements[i].value+";"; // 체크되어 있으면 값을 임시변수에 ;시를 뒤에 붙여 저장합니다.
}
form.program.value=check_value; // 마지막으로 모든 값을 히든 필드변수 값에 넣어서 폼으로 되돌려줍니다.
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM name="form" METHOD=POST ACTION="" onsubmit="check()">
<INPUT TYPE="checkbox" value="php">php
<INPUT TYPE="checkbox" value="asp">asp
<INPUT TYPE="checkbox" value="jsp">jsp
<INPUT TYPE="hidden" name="program">
<INPUT TYPE="submit" value="전송">
</FORM>
잠시 코드 설명을 드리자면 폼을 전송하기 전에 onsubmit 이벤트 핸들러로 체크 박스의 체크여부를
일단 체크 한후 체크되어 있는 내용의 값을 모두 하나의 문자열로 만듭니다.
모두 체크한다면 폼은 program이라는 변수에 php;asp;jsp;라는 값을 담아서 넘기게 됩니다.
일일히 체크 박스의 값을 따로 받을 수 있기는 하지만 그렇게 하면 변수 낭비이기 때문에 히든 필드 하나에만
모두 모아서 보내는 것이 효율적이지요.
폼을 처리하는 php에서는 program변수에서 값을 explode함수를 이용 ;로 분리하는 배열을 만들어서
나누어 값을 출력시키면 되지요.. select역시 마찬가지 방법으로 하시면 됩니다.
-------------------------------------------------------------
역시 legend님께서 친절하게 답변을 잘해주셨습니다
그런데 마지막에 explode를 이용 ;로 분리해서 출력하는거 모르겟군요.. 초보라 ㅠㅠ
학교수업에 asp도 같이 하는데..checkbox asp는 쉽게 하던데.. php는 상당히 복잡하군요 ㅠㅠ
자바스크립트는 대충 주석을 같이 달았습니다.
<SCRIPT LANGUAGE="JavaScript">
<!--
function check()
{
var check_value=""; // 체크 박스의 값을들 임시로 담아둘 변수
for(i=0;i<form.elements.length;i++) // 폼 엘리먼트의 갯수만큼 실행합니다.
{
if (form.elements[i].type=="checkbox") // 체크박스만을 검색합니다.
if (form.elements[i].checked==true) // 체크박스가 체크되어 있는지 살핍니다.
check_value+=form.elements[i].value+";"; // 체크되어 있으면 값을 임시변수에 ;시를 뒤에 붙여 저장합니다.
}
form.program.value=check_value; // 마지막으로 모든 값을 히든 필드변수 값에 넣어서 폼으로 되돌려줍니다.
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM name="form" METHOD=POST ACTION="" onsubmit="check()">
<INPUT TYPE="checkbox" value="php">php
<INPUT TYPE="checkbox" value="asp">asp
<INPUT TYPE="checkbox" value="jsp">jsp
<INPUT TYPE="hidden" name="program">
<INPUT TYPE="submit" value="전송">
</FORM>
잠시 코드 설명을 드리자면 폼을 전송하기 전에 onsubmit 이벤트 핸들러로 체크 박스의 체크여부를
일단 체크 한후 체크되어 있는 내용의 값을 모두 하나의 문자열로 만듭니다.
모두 체크한다면 폼은 program이라는 변수에 php;asp;jsp;라는 값을 담아서 넘기게 됩니다.
일일히 체크 박스의 값을 따로 받을 수 있기는 하지만 그렇게 하면 변수 낭비이기 때문에 히든 필드 하나에만
모두 모아서 보내는 것이 효율적이지요.
폼을 처리하는 php에서는 program변수에서 값을 explode함수를 이용 ;로 분리하는 배열을 만들어서
나누어 값을 출력시키면 되지요.. select역시 마찬가지 방법으로 하시면 됩니다.
-------------------------------------------------------------
역시 legend님께서 친절하게 답변을 잘해주셨습니다
그런데 마지막에 explode를 이용 ;로 분리해서 출력하는거 모르겟군요.. 초보라 ㅠㅠ
학교수업에 asp도 같이 하는데..checkbox asp는 쉽게 하던데.. php는 상당히 복잡하군요 ㅠㅠ
$program=explode(";", $program);
for($i=0; $i<sizeof($program); $i++)
echo $program[$i]."<br>";
일단 체크박스의 특성이 체크 여부를 따져서 체크되어 있으면 그 값을 변수에 넣어서 전달하는 역할이지요
제가 설명드린 방법은 변수낭비를 줄이기 위한 방법으로 잘 모르시겠으면 그냥 모든 변수를 일일히 체크해서
출력하는 방법도 가능합니다. 조금 노가다이긴 하지만 아래와 같은 방법도 가능하지요. 근데 체크 박스의 갯수가 많아지면 당연히 위의 방법이 조금 낫겠지요..
if($체크박스이름1) echo $체크박스이름1;
if($체크박스이름2) echo $체크박스이름2;
if($체크박스이름3) echo $체크박스이름3;