개요
HTML 태그에 설정하는 값과 DB에 저장하는 값이 일치 하지 않을 때는
짝을 이루는 함수를 만들어 사용하면 수월 합니다.
내용
보통 input type="text" 이 넘은 DB text 타입 컬럼에 그대로 저장 해주면 됩니다.
그런데 <input type="checkbox" name="isSMS" checked /> 이건 어떻습니까?
체크박스의 값을 저장하기 위해 DB에 어떤 컬럼을 만드시나요?
보통은 bit 또는 char(1) 로 만드실 껍니다. 어떤 DB는 true, false도 되었던거 같은데....
여튼 여기서는 bit 또는 char(1) 타입의 컬럼에 저장한다고 칩시다.
HTML을 SUBMIT() 하여 저 체크박스의 값을 뽑아 보면,
isSMS = Request.Form("isSMS") 으로 뽑겠죠?
checked 일때는 "on" 이라고 설정 됩니다.
그럼 "on" 을 그대로 DB에 저장 할 수 없으니,
"on" 일 때는 "1"로 바꿔주고, 아닐 때는 "0"으로 바꿔준 다음 DB에 저장하면 됩니다.
여기까지는 저장하는 방법이구요, 이제는 불러올때를 살펴봅시다.
DB에 "1" 또는 "0" 이라고 저장했으니, select 하여,
isSMS= rs("isSMS") 이렇게 뽑아 보면,
"1" 또는 "0"이라고 나올 껍니다.
그럼 "1"을 태그에 그대로 먹일 순 없으니,
"1"은 "checked"로 바꿔주고, "0"이면 ""(빈칸)으로 바꿔주고 나서 먹이면 됩니다.
이 내용을 실제 코딩으로 하면, 매번 If .. Else .. End If 문장을 수도 없이 써야 합니다.
이런 경험한적 있으실 껍니다. 아마 수백 수천번씩은 경험하는 내용이 아닌가 싶습니다.
짝 함수
전 아래와 같이 짝을 이루는 함수를 만들어 사용합니다.
'tagValue를 DB에 저장 가능한 형태로 변환한다.
'tagValue는 사실 Request.Form("isSMS") 으로 뽑은 값이다.
Function toDBValue_checkbox(tagValue)
If tagValue = "on" then
toDBValue_checkbox = "1"
Else
toDBValue_checkbox = "0"
End If
End Function
'dbValue를 태그에 적용 가능한 형태로 변환한다.
Function toTagValue_checkbox(dbValue)
If dbValue = "1" Then
toTagValue_checkbox = "checked"
Else
toTagValue_checkbox = ""
End If
End Function
사용법
Tag에서 값을 받아, DB에 저장하려 할 때
isSMS= Request.Form("isSMS")
isSMS= toDBValue_checkbox(isSMS) '"1" 또는 "0"
DB에서 불러와, Tag에 값을 적용할 때
isSMS= rs("isSMS")
isSMS= toTagValue_checkbox(isSMS) '"checked" 또는 ""(빈칸)
<input type="checkbox" name="isSMS" <%=isSMS%>>
참고
3항 연산자가 지원되는 언어에서는 쌍 함수 만드는 것 보다
3항 연산자를 사용하는 것이 더욱 유리할 지도 모릅니다.
코딩 속도 때문인데요. ASP.NET의 경우 tag를 DB에 저장할 때,
isSms.Checked ? "1" : "0"
이래 주면 되거든요. 구지 함수를 만들 필요가 없지요.
꺼낼 때에는 바인딩 개념을 쓰니깐 Checked='<%# (bool)Eval("isSms") %>' 이딴 식으로 하지요.
'ASP > ASP My Library' 카테고리의 다른 글
ASP용 String.Format() 함수, eregi_replace() 함수, SQL 인젝션 방지 함수 (0) | 2013.10.01 |
---|
MySQL 구버전 다운로드 / 설치
http://www.oldapps.com/mysql_server.php
참고로, mysql-5.5.30-win32.msi, mysql-5.5.30-winx64.msi 를 받았습니다.
오라클가서 받아봤는데, 패키지 덩치 너무 커서 걍 지웠습니다.
MySQL Connector/ODBC 3.51 다운로드 / 설치
http://dev.mysql.com/downloads/connector/odbc/3.51.html
ODBC 드라이버 입니다. ODBC제어판 가서 따로 DSN 추가할 필요 없습니다. 설치만 하면 됩니다.
ASP쪽 테스트 준비
test.asp 작성
<%
dim conn
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 3.51 driver}; Server=localhost; Database=mysql; Uid=root;Pwd=****;"
if conn.errors.count = 0 then
response.write "연결됨"
end if
conn.close
set conn = nothing
%>
브라우저로 테스트
http://localhost/test.asp 를 열었을때, 연결됨이 출력되면 성공.
출력안되면 "Driver={MySQL ODBC 3.51 driver}; Server=localhost; Database=mysql; Uid=root;Pwd=****;" 이부분을 중점적으로 확인해 보십시오.
'ASP' 카테고리의 다른 글
ASP textarea 엔터키 처리, 줄바꿈 처리 (0) | 2013.10.01 |
---|---|
ASP include (0) | 2013.10.01 |
ASP IF문 (0) | 2013.10.01 |
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP Dictionary Object (0) | 2013.09.30 |
시나리오
1. 사용자가 textarea 에 내용을 입력하고 저장을 눌렀다. 중간중간에 엔터키를 쳐서 줄바꿈 문자가 포함되어 있다.
(이 시점에서는 입력한 내용을 건들지 않습니다. <br>로 변환하지 않습니다. 원본을 훼손하지 않습니다.)
2. 줄바꿈 문자를 포함한체로 해당 테이블에 저장되었다.
3-1. 글을 보여줄 때, 아래와 같이 치환하면 됩니다.
<%= Replace(RS("content"), Chr(13)&Chr(10), "<br>") %>
3-2. 글을 편집할 때는 다시 textarea로 로드 할 것 입니다. 이때에는 아무런 치환작업 없이 그냥 로드 하면 됩니다.
결론
테이블에 저장 할 때부터 <br>로 치환하는 방법도 있지만 이렇게 하는 것이 보다 간결합니다.
참고
DHTML 에디터는 textarea가 아니니 논외입니당~~~
참고로 DHTML 에디터는 div를 사용하는 것이고, editable=true 였나? 뭐 여튼 이렇게 주면 div 안에 키보드/마우스 입력이 가능해 집니다.
'ASP' 카테고리의 다른 글
ASP + MYSQL (0) | 2013.10.01 |
---|---|
ASP include (0) | 2013.10.01 |
ASP IF문 (0) | 2013.10.01 |
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP Dictionary Object (0) | 2013.09.30 |
너무 오랜만에 한 asp 코딩이라 절대경로가 안되는줄 알고 깜짝 놀랐었다.
하지만 역시 될껀된다. 10여년 전에도 필요한건 다 만들어 주었구나.. ms
<!--#include file="상대경로명"-->
<!--#include virtual="절대경로명"-->
전 보통 #include virtual 를
config.inc 같은 모든 파일에 포함되어야 하는 파일을 낑겨 넣을 때 사용합니다.
top이나 bottom 같은 레이아웃 요소를 낑겨 넣을 때도 사용합니다.
이 둘은 대부분의 파일에 낑겨 넣어야 하기 때문에,
머릿속으로 상대경로 연산하기 귀찮아서,
걍 절대경로로 다 낑깁니다.
나머지는 #include file 을 사용합니다.
'ASP' 카테고리의 다른 글
ASP + MYSQL (0) | 2013.10.01 |
---|---|
ASP textarea 엔터키 처리, 줄바꿈 처리 (0) | 2013.10.01 |
ASP IF문 (0) | 2013.10.01 |
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP Dictionary Object (0) | 2013.09.30 |
If 조건문 Then 실행구문
If 조건문 Then
실행구문 1
실행구문 2
End If
If 조건문 Then
실행구문 1
실행구문 2
else
실행구문 3
실행구문 4
End If
If 조건문1 Then
실행구문1
elseif 조건문2 Then
실행구문2
elseif 조건문3 Then
실행구문3
:
:
else
실행구문n
end If
뭐 이런 식이라고 하는데,
주의할 것은 비교연산자중 같다가 == 두개가 아니라 = 하나로 해야 한다.
또한 != 가 아니라 <> 로 해야 한다.
그리고 맨 위에
If 조건문 Then 실행구문
이 문장은 End If 가 없지만 늘 입력해 두는 것이 바람직 하다.
왜냐하면 언제 조건관련 코드가 늘어날지 모르기 때문이다.
'ASP' 카테고리의 다른 글
ASP textarea 엔터키 처리, 줄바꿈 처리 (0) | 2013.10.01 |
---|---|
ASP include (0) | 2013.10.01 |
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP Dictionary Object (0) | 2013.09.30 |
ASP 문자열 함수, 문자열 관련 함수 (0) | 2013.09.30 |
개요
쿼리문 작성 어떻게 하나요?
그냥 막코딩 하면 되지요~~
가독성 따윈 필요 없으니
", name=" + name + ", nick=" +
이런 식으로 해도 되지요.
열맞추고 줄맞추고 해서 가독성 높일 수도 있습니다.
저도 전에 그렇게 했었어요.
하지만 잠깐 시간을 내어 아래 함수 사용법을 익히면,
가독성이 높은 쿼리문을 작성 할 수 있습니다.
가독성이 높아지면 실수할 확률이 적어지고, 디버깅 횟수가 줄게 되어
결과적으로 빠른 코딩이 가능해 집니다.
가장 중요한 함수는 가독성을 위한 stringFormat()과 보안을 위한 toDbString() 입니다.
함수들
<%
'닷넷의 String.Format을 흉내낸 함수 입니다.
Function stringFormat(sVal, aArgs)
Dim i
For i=0 To UBound(aArgs)
sVal = Replace(sVal,"{" & CStr(i) & "}",aArgs(i))
Next
StringFormat = sVal
End Function
'아래와 같이 결과를 변수에 무조건 대입해야 합니다. 아니면 문법 오류가 발생 합니다.
'Dim result
'result = stringFormat("this {0} a tes{1} string containing {2} values", _
' Array("is", "t", "some"))
'PHP의 eregi_replace 를 흉내낸 함수 입니다.
Function eregi_replace(pattern, replace, text)
Dim eregObj
Set eregObj = New RegExp
eregObj.Pattern = pattern '패턴 설정
eregObj.IgnoreCase = True '대소문자 구분 여부
eregObj.Global = True '전체 문서에서 검색
eregi_replace = eregObj.Replace(text, replace): 'Replace String
End Function
'문자열을 쿼테이션으로 감싸주는 것을 기본으로 하여,
'사용자가 입력한 ' 에 대한 지원과
'SQL 인젝션 방지 그리고 자바스크립트 삽입 방지를 지원합니다.
Function toDbString(str)
str = Replace(str, "'", "''")
str = "'" + str + "'"
str = eregi_replace("<script", "< script", str)
str = eregi_replace("</script", "< /script", str)
toDbString = str
End Function
%>
사용법
<%
query = stringFormat("update bbsCon set title={0}, content={1}, ip={2} where id={3}", _
Array(toDbString(title), _
toDbString(content), _
toDbString(Request.ServerVariables("REMOTE_ADDR")), _
id _
) _
)
query = stringFormat("insert into bbsCon (title, content, nick, ip) values ({0}, {1}, {2}, {3})", _
Array(toDbString(title), _
toDbString(content), _
toDbString(Session("nick")), _
toDbString(Request.ServerVariables("REMOTE_ADDR")) _
) _
)
query = stringFormat("delete from bbsCon where id={0}", _
Array(id))
query = stringFormat("select id, dtReg, title, nick, readCnt, ip from bbsCon order by id desc", _
Array())
query = stringFormat("select * from bbsCon where id={0}", _
Array(id))
%>
'ASP > ASP My Library' 카테고리의 다른 글
ASP HTML Tag 값과 DB 값을 호환 시키기 위한 짝 함수 - checkbox (0) | 2013.10.04 |
---|
정적 배열 선언 / 초기화
<%
'동적 배열 선언 - 첨자 3 까지, 크기는 4
Dim arr(3)
'초기화
arr(0) = "Albert Einstein"
arr(1) = "Mother Teresa"
arr(2) = "Bill Gates"
arr(3) = "Martin Luther King Jr."
'순회
For Each item In arr
Response.Write(item & "<br />")
Next
%>
<%
'variable 변수 선언
Dim arr2
'정적배열 선언 / 초기화 후 대입
arr2 = Array("a", "b", "c")
%>
동적 배열 선언 / 초기화
<%
'정적 배열 선언
Dim arrDyn()
'동적 크기 조정
ReDim arrDyn(1)
'초기화
arrDyn(0) = "Albert Einstein"
arrDyn(1) = "Mother Teresa"
ReDim Preserve arrDyn(3)
arrDyn(2) = "Bill Gates"
arrDyn(3) = "Martin Luther King Jr."
'순회
For Each item In arrDyn
Response.Write(item & "<br />")
Next
%>
배열크기 구하기
Ubound(Arr)
'ASP' 카테고리의 다른 글
ASP include (0) | 2013.10.01 |
---|---|
ASP IF문 (0) | 2013.10.01 |
ASP Dictionary Object (0) | 2013.09.30 |
ASP 문자열 함수, 문자열 관련 함수 (0) | 2013.09.30 |
IIS index.asp 기본문서 추가 혹은 HTML 페이지 이동 (0) | 2013.09.30 |
오랜만에 asp 책을 들춰보니 dictionary 객체에 대해 초반부에 쓰여져 있었다.
분명히 읽고 지나갔을텐데, 이게 있었구나 하는 생각을 하는걸 보니,
그때는 dictionary 객체에 아무 감동도 쓸모도 못느꼈나보다.
원문) http://www.w3schools.com/asp/asp_ref_dictionary.asp
예제)
<%Dim d
Set d=Server.CreateObject("Scripting.Dictionary")
d.Add "re","Red"
d.Add "gr","Green"
d.Add "bl","Blue"
d.Add "pi","Pink"
Response.Write("The value of key gr is: " & d.Item("gr"))
%>
'ASP' 카테고리의 다른 글
ASP IF문 (0) | 2013.10.01 |
---|---|
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP 문자열 함수, 문자열 관련 함수 (0) | 2013.09.30 |
IIS index.asp 기본문서 추가 혹은 HTML 페이지 이동 (0) | 2013.09.30 |
IIS7에서 ASP 오류 메시지 출력 되도록 설정하기 (0) | 2013.09.28 |
원문 : http://flashcafe.org/asp_study/3882
스샷까지 있고, 상세합니다.
1 |
FormatCurrency |
시스템 제어판에 정의된 통화 기호를 사용하여, 통화값으로 서식화된 식을 반환한다. |
2 |
FormatDateTime |
날짜와 시간으로 서식화된 식을 반환한다. |
3 |
FormatNumber |
숫자로 서식화된 식을 반환한다 |
4 |
FormatPercent |
뒤에 % 문자가 붙는 백분율(100이 곱해짐)로 서식화된 식을 반환한다. (이건 예제가 잘못되었음) |
5 |
InStr |
한 문자열 안에 특정 문자열이 처음으로 나타난 위치를 정수 값으로 반환한다. |
6 |
InStrB |
바이트 데이터를 포함하고 있는 스트링 내에서 만나는 첫 번째 서브스트링의 바이트 위치를 나타내는 정수값을 반환한다. 바이트의 반환만 제외하고 InStr과 사용법이 동일하다. (바이트를 반환한다고? 정수값을 반환한다며?) |
7 |
InStrRev |
한 문자열이 다른 문자열에 나타나는 위치를 문자열 끝에서 반환한다. |
8 |
Join |
배열에 포함되어 있는 여러 하위 문자열을 결합하여 만든 문자열을 반환한다. (결합시 구분자 삽입 가능) |
9 |
LCase |
스트링에 있는 모든 문자들을 소문자로 변경하는 함수이다. |
10 |
Left |
문자열의 왼쪽에서 설정하는 길이만큼의 문자들을 반환한다. |
11 |
Len |
|
12 |
LTrim |
|
13 |
Mid |
스트링의 문자열에서 특정 지점부터 지정된 길이 만큼의 문자열을 반환한다. (닷넷의 Substring 과 같다.) |
14 |
Replace |
|
15 |
Right |
문자열의 오른쪽부터 정해진 수만큼의 문자를 반환한다. |
16 |
RTrim |
|
17 |
Space |
지정된 수만큼의 공백이 들어있는 문자열을 반환한다. |
18 |
Split |
|
19 |
StrComp |
|
20 |
String |
지정한 길이의 반복되는 문자열을 반환한다. |
21 |
StrReverse |
|
22 |
Trim |
|
23 |
UCase |
|
'ASP' 카테고리의 다른 글
ASP IF문 (0) | 2013.10.01 |
---|---|
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP Dictionary Object (0) | 2013.09.30 |
IIS index.asp 기본문서 추가 혹은 HTML 페이지 이동 (0) | 2013.09.30 |
IIS7에서 ASP 오류 메시지 출력 되도록 설정하기 (0) | 2013.09.28 |
보통 도메인만 입력해도 index.html 이 로드 되는데,
그 이유는 index.html 이 기본문서로 등록되어 있기 때문이다.
그런데, IIS7 에는 index.asp가 기본문서로 등록되어 있지 않다.
이전버전에서는 어땠는지 잘 기억나지 않는다.
여하튼 도메인만 입력해도 페이지가 뜨게 하기 위한 방법은 두가지다.
첫번째는 IIS를 열고 기본문서에 index.asp를 추가한다. 간단하다.
두번째는 index.html 을 열고 index.asp로 즉각 이동되도록 코딩을 해준다.
두번째 방법은 첫번째 보다 복잡하지만,
FTP로 파일만 올리고 IIS는 건들고 싶지 않을 때, 혹은 IIS를 건들지 못할 때 사용하면 된다.
아래는 이런상황에서 HTML 문서내에서 페이지를 이동시키는 두가지 방법이다.
1. <head> 태그 내에 meta 태그 추가
<meta http-equiv="REFRESH" content="0; URL=index.asp">
content에 설정된것 처럼 0초후에 index.asp로 이동한다.
2. <head> 태그 내에 자바스크립트 추가
<SCRIPT type=text/javascript>
location.href='index.asp';
</SCRIPT>
'ASP' 카테고리의 다른 글
ASP IF문 (0) | 2013.10.01 |
---|---|
ASP 배열 선언/초기화 - 정적배열 / 동적배열 (0) | 2013.09.30 |
ASP Dictionary Object (0) | 2013.09.30 |
ASP 문자열 함수, 문자열 관련 함수 (0) | 2013.09.30 |
IIS7에서 ASP 오류 메시지 출력 되도록 설정하기 (0) | 2013.09.28 |