입력폼에서 같은이름의 객체를 배열로 넘겨서 사용할때.!
- Posted at 2007/12/07 15:26
- Filed under 일함서/하다보면말이지
프로젝트 하다보면 폼에서 같은 이름으로 배열을 이용해서 혹은 구분자를 이용해서 받은다음
짤라서 사용해야하는 경우가 심심치 않게 생긴다... 이번 포스트는 이에관한 내용이다.

이런 입력방식에서 저런 결과를 얻어야하는 경우를 생각해보자....
input.asp --
<html>
<head>
<title> test </title>
</head><body>
<table>
<form name="test" method="post" action="result.asp">
<% for i = 1 to 10 %>
<tr>
<td><input type="text" name="TESTCODE"></td>
</tr>
<% next %>
<tr>
<td><input type="submit" value="전송"></td>
</tr><form>
</table>
</body>
</html>
위와같은 형식으로 사용할 수 있게된다... 물론 틀린방법이라고 생각하지는 않치만 다음과 같은 문제점이 발생할 수 있다...result.asp--
TESTCODE = request("TESTCODE")temp = split(TESTCODE,",")
for i = 0 to ubound(temp)
response.write temp(i) & "<br/>"
next
%>
1. 기본적으로 같은 이름을 가진 입력객체가 여러개 존재하면 구분자는 콤마(,) 로 주어진다
2. 1번과 같은 문제점 때문에 입력내용에서 콤마(,)가 포함이되는 경우에는 split를 사용하지 못한다.
3. split 와 ubound라는 과정을 거친후에 연산을 할 수 있게된다.
실제로 위와같은 코딩이되어있는 환경에서 콤마(,)를 입력해서 넣어보자
입력 예시는 1 2 3 4 5 6 7, 8 9 0 으로 입력을 하였다.

위의 그림과같이 가운데 공백이 들어가게 된다 즉 10개를 입력했지만 값은 11개가 생기는 것이고
그렇다면 받는 페이지에서 10개로 전제하에 작업된 내용들은 1개의 값을 손실할 수 밖에 없는 노릇이다.
그렇다고 콤마(,) 를 replace(TESTCODE,",",",") 이런식으로 할수도 없는 노릇이다;;;
이것은 쉽게 해결 가능한 문제이다
result.asp 소스를 다음과같이 변경해서 다시 테스트를 해보자.
result.asp --
<%
for i = 1 to request("TESTCODE").Count
response.write request("TESTCODE")(i) & "<br/>"
next
%>
그다음 다시 결과를 확인해보았다.

10개의 입력에 10개의 결과를 올바르게 가져올 수 있다.
Posted by web20korea
- Tag
- ASP배열




,
request 배열



,
split



,
ubound



,
배열




- Response
- No Trackback , No Comment

