묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
htm화일에서 넘어온 변수중..
2002.04.16 00:44
htm화일에서 넘어온 변수중..
check box에서 여러개 선택한것과
select에서 multiple=true되서 여러개 선택한것이 그냥 echo 변수명 해서 쓰니까 하나씩 밖에 출력을 못하더군요.. 나머진 잘되는데..
어떻게 해야하는지.. ^^;;
Legend (2002-04-14 18:22:13)
모든 폼 요소는 value값을 넘기기 때문에 checkbox와 select는 그냥 값만을 넘겨받아서는 원하는 결과를 얻기 힘들지요.. 일단 자바스크립트로 한번 처리를 한후에 넘겨 받아야 하지요..
체크박스의 경우는 submit할 때 체크박스들을 검색하여 체크여부를 보고 어느어느것이 체크되었나
확인후에 그 체크된 것들을 간단히 인덱스 형식으로 따로 하나의 변수로 묶어서 보내고 받을 때는
그 받은 인덱스를 역으로 풀어서 확인하는 식으로 해야지요.
예를 들어 4개의 체크 박스가 있다면 3, 4번이 체크되었다면 따로 index라는 변수에 3,4를 넣어서 보내면
받을때는 index의 값을 확인해서 어느 것이 체크되었나 다시 확인하는 방법이지요.
select역시 마찬가지에요.. options 배열에 선택되어진 인덱스를 먼저 검색한후 이 값들을 묶어서 보내야지요
받을 때는 같은 방법으로 어느것이 선택되었나 확인하는 방법으로요. 아니면 직접 값들을 묶어서 보내도 되지요
-------------------------------
legend님께서 잘 설명해주셨는데요~ 제가 워낙 초보라 체크여부를 인덱스로 묶어 보낸다고 했는데 어떻게 해야하는지 잘모르겠네요~ ㅠㅠ 설명좀~
check box에서 여러개 선택한것과
select에서 multiple=true되서 여러개 선택한것이 그냥 echo 변수명 해서 쓰니까 하나씩 밖에 출력을 못하더군요.. 나머진 잘되는데..
어떻게 해야하는지.. ^^;;
Legend (2002-04-14 18:22:13)
모든 폼 요소는 value값을 넘기기 때문에 checkbox와 select는 그냥 값만을 넘겨받아서는 원하는 결과를 얻기 힘들지요.. 일단 자바스크립트로 한번 처리를 한후에 넘겨 받아야 하지요..
체크박스의 경우는 submit할 때 체크박스들을 검색하여 체크여부를 보고 어느어느것이 체크되었나
확인후에 그 체크된 것들을 간단히 인덱스 형식으로 따로 하나의 변수로 묶어서 보내고 받을 때는
그 받은 인덱스를 역으로 풀어서 확인하는 식으로 해야지요.
예를 들어 4개의 체크 박스가 있다면 3, 4번이 체크되었다면 따로 index라는 변수에 3,4를 넣어서 보내면
받을때는 index의 값을 확인해서 어느 것이 체크되었나 다시 확인하는 방법이지요.
select역시 마찬가지에요.. options 배열에 선택되어진 인덱스를 먼저 검색한후 이 값들을 묶어서 보내야지요
받을 때는 같은 방법으로 어느것이 선택되었나 확인하는 방법으로요. 아니면 직접 값들을 묶어서 보내도 되지요
-------------------------------
legend님께서 잘 설명해주셨는데요~ 제가 워낙 초보라 체크여부를 인덱스로 묶어 보낸다고 했는데 어떻게 해야하는지 잘모르겠네요~ ㅠㅠ 설명좀~
자바스크립트는 대충 주석을 같이 달았습니다.
<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역시 마찬가지 방법으로 하시면 됩니다.