2014. 10. 13. 13:46 IT/ASP
입력폼에서 같은이름의 객체를 배열로 넘겨서 사용할때 comma(쉼표) 포함시 해결법
프로젝트 하다보면 폼에서 같은 이름으로 배열을 이용해서 혹은 구분자를 이용해서 받은다음
짤라서 사용해야하는 경우가 심심치 않게 생긴다... 이번 포스트는 이에관한 내용이다.
이런 입력방식에서 저런 결과를 얻어야하는 경우를 생각해보자....
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개의 결과를 올바르게 가져올 수 있다.
'IT > ASP' 카테고리의 다른 글
ASP 첨부파일 다운로드(한글 깨짐 방지) (0) | 2015.01.08 |
---|---|
엑셀 출력시, 문자를 숫자로 인식하는 경우.. (0) | 2014.11.06 |
ASP 엑셀 파일(xls)로 저장. (0) | 2014.08.04 |
ASP 접속한 단말기 및 브라우저 정보 추출 (HTTP_USER_AGENT) (0) | 2014.07.24 |
세자리 콤마 찍기. (0) | 2014.06.12 |