BLOG main image
분류 전체보기 (65)
JSP (6)
Android (1)
ASP.NET (0)
MSSQL (4)
PHP (18)
ASP (11)
오픈 API (1)
HTML (2)
JavaScript (0)
Windows Programming (8)
컴퓨터교양 (14)
객체 지향 (0)
리뷰 및 생각 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'ASP'에 해당되는 글 11건
2013. 10. 4. 02:51

개요

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") %>' 이딴 식으로 하지요.

2013. 10. 1. 01:00
[ASP]

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
2013. 10. 1. 00:38
[ASP]

시나리오

 

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
2013. 10. 1. 00:24
[ASP]

너무 오랜만에 한 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
2013. 10. 1. 00:15
[ASP]

 

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
2013. 10. 1. 00:06

개요

쿼리문 작성 어떻게 하나요?

그냥 막코딩 하면 되지요~~

가독성 따윈 필요 없으니

", 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))
%>

2013. 9. 30. 23:45
[ASP]

정적 배열 선언 / 초기화


<%

'동적 배열 선언 - 첨자 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
2013. 9. 30. 23:27
[ASP]

오랜만에 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"))
%>
2013. 9. 30. 23:21
[ASP]

원문 : 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

 

2013. 9. 30. 22:28
[ASP]

보통 도메인만 입력해도 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>

prev"" #1 #2 next