테스트 사이트 - 개발 중인 베타 버전입니다

asp 저장하기

· 16년 전 · 1619
  글저 장하기

 
  이제 앞에서 배운 글쓰기에서 전송한 데이터를 저장해 보도록 하겠습니 다.
  Request 개체를 이용하여 Form에서 전송된 값을 변수에 저장해보죠.
 
  <%
  name = request("name")
  email = request("email")
  url = request("url")
  title = request("title")
  content = request("content")
  pin = request("pin")
  tag = request("tag")
  %>
 
  위에 방법은 추천되는 방법중 하나 입니다.
 
  그 다음은 DB 를 연결해야겠죠??
  DB 연결부는 이렇게 적어줍니다. 참고로 ACCESS 연결부분입니다.
 
  <%
  Set db=Server.CreateObject("ADODB.Connection")
  '데이터베이스 연결을 위한 Connection 개체의 인스 턴스의 생성합니다.
  db.Open dbname
  '데이터베이스를 DSN을 이용해서 오픈합니 다.
  SQL="Select MAX(num) form " & session("table")
  '가져올 데이터의 쿼리문을 작성합니다.
  Set rs=Server.CreateObject("ADODB.Recordset")
  '레코드셋 개체의 인스턴스를 생성합니 다.
  rs.Open SQL, db
  '지정한 쿼리로 데이터베이스를 연결해서 레코드셋 개체에 결과값을 저장합니다.
  %>
 

  여기 서.. 잠깐... Tip!!

 
  위에 소스를 보시면.. db.Open dbname 이 있습니다.
 
  그곳은 원래 dbname 대신에 ("inno")가 들어가야합니다.
  하지만 저렇게 해 준거에도 다 이유가 있습니다.
  여러분이 저의 소스를 받아서 사용하실때나.. 아니면.. DB 이름이 맘에 안들 어서
  DB 이름을 수정하시고자 하실때.. DB 연결부분을 각 파일마다 수정해야하는 번거
  러움을 들어드리고자.. 저렇게 프로그래밍한겁니다.
 
  Write_ok.asp 파일의 윗부분에 보시면.. <!-- #include file="dbinfo.asp" -->
  이라는 부분이 있습니다. dbinfo.asp를 열어보시면 dbname 이 라는 변수가

  dbinfo.asp에서 불러져왔다는걸 알수 있습니다.
  모든 파일의 DB연결부분을 저런식으로 해주면.. DB이름을 변경하고 싶으실 때..
  dbinfo.asp을 열어서 dbname = "inno" 부분에서.. inno 대신 원하시는 이름을
  입력하시고.. 저장하시면.. 그 게시판의 각 소스의 db연결부분의 db이름이 바뀌는것입니다.
  하하.. 이해가 되셨는지.. 모르겠네요.. ^^
 

 
  쿼리의 결과가 불러져 왔습니다.
  하지만, 이 쿼리의 결과로는 아무 데이터도 얻지 못합니다. 왜냐하면 아직 DB에 저장된 데이터가 없으니까 말이에요..
  그래서 아래의 소스가 그것을 체크하는 소스입니다. 쿼리에서 가져온 데이터 가 아무것도 없다면, 처음으로 들어오는 글이니까 num 변수에다가 1이라고 저장하고, 불러온 데이터가 있다면 그 값에 1을 더해서 num에 저장하라는 것입니다.
 
  <%
  if IsNULL(rs(0)) then
  '현재 가져온 데이터가 없을경우에는
    num = 1
  'num 변수에 1이라는 값을 저장하고
  else
  '그렇지 않을 경우.. 그러니까.. 가져온 데이터가 있 을경우..
    num = rs(0)+1
  '그 값에 1을 더해서 num 변수에 저장합니 다.
  end if
  %>
 
  <%
  if request("id") <> "" then
  '답변쓰기일경우
 
    re = Cint(request("re"))
    resame = Cint(request("resame"))
    reid = Cint(request("reid"))
 
  SQLString = " UPDATE " & session("table") & " SET reid = reid + 1 WHERE re = " & re & " AND reid > " & reid
  '이 부분 답변 글올리기에 있어 중요한 부분이에요. 답변이 들어올 자리의 reid 보다 큰 reid 의 값을 +1 시키는 부분이죠.
  '하지만 이런 식으로하면 답변 알고리즘에 약간의 문 제가 있어요.
  '자세한건 차차 이야기로 하고 넘어가죠.
  db.Execute(SQLString)
  '위에 update 문을 실행하는 부분이죠.
 
  newreid = reid + 1
  newresame = resame + 1
 
  else
  '답변쓰기가 아닐 경우
 
    re = num
  're의 값에 num 값을 넣습니다.
    newresame = 0
  'resame 에 0의 값을 넣습니다.
    newreid = 0
  'reid 값에 0을 넣습니다.
 
  end if
  %>
 
  그 다음은 폼에서 전송된 reqeust 값을 각 변수에 저장해 주는겁니다.
 
  <%
  ...
  name = request("name")
  url = request("url")
  ...
  %>
  이런식으로 저장을 해 주는거죠..
 
  <%
  if left(now,2) = "20" then
  'now라는 함수를 이용하여, 현재의 날짜와 시 간을 불러옵니다.
  '앞에서 2자리를 잘라서 20인 경우..
    writeday = mid(now,3)
  'now값의 3번째자리부터 writeday 라 는 변수에 저장합니다.
  else
  '위의 if 문의 조건이 아닌경우
    writeday = now
  'now함수의 값을 그대로 writeday 라 는 변수에 저장합니다.
  end if
 
  if left(url,7) = "http://" then
  'url 변수에 저장된 값의 7번째 자리까지 문자 가 'http://' 이면..
    url = mid(url,8)
  'http:// 라는 문자는 삭제하고 url 변수에 저장하라 는 거에요.
  '가끔씩 자동완성기능을 이용할때.. http:// 라는 값이 같이 들어가길래.. 지우지 않아도 된다는거죠.
  '자동으로 삭제해주니까... 하하.. ^^
  end if
  %>
 
  다음은 insert 문을 이용하여.. 폼에서 전송된 데이터를 DB에 저장하는 부분 입니다.
 
  <%
  SQL = "INSERT INTO " & session("table") & " (name,email,url,title,content,tag,pin,writeday,visit,num,re,resame,reid) VALUES "
  SQL = SQL & "('" & name & "'"
  SQL = SQL & ",'" & email & "'"
  SQL = SQL & ",'" & url & "'"
  SQL = SQL & ",'" & title & "'"
  SQL = SQL & ",'" & content & "'"
  SQL = SQL & ",'" & tag & "'"
  SQL = SQL & ",'" & pin & "'"
  SQL = SQL & ",'" & writeday & "'"
  SQL = SQL & "," & 0 & ""
  SQL = SQL & "," & num & ""
  SQL = SQL & "," & re & ""
  SQL = SQL & "," & newresame & ""
  SQL = SQL & "," & newreid & ")"
 
  db.Execute SQL
  %>
 
  이 부분이 가장 많은 에러가 나타나고, 초보 프로그래머님들이 가장 많이 막 히는 부분입니다. 주의 할 부분은.. 데이터 입력시 문자값 데이터는 앞뒤로 '(작음 따옴표)를 둘러주고 숫자값 데이터는 '(작음 따옴표) 없이 그냥 넣는다는 것입니다.
  간단한거면서도.. 저도 첨엔 많이 막히는 부분이었습니다.
 
  <%
  rs.close
  db.close
  Set rs = nothing
  Set db = nothing
  %>
 
  이렇게 해주면.. 글쓰기 저장하기 부분은 끝이 나는겁니다.

[이 게시물은 관리자님에 의해 2011-10-31 16:46:12 기타에서 이동 됨]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
8050
8048
19969
19968
19967
19966
19965
19964
19963
19962
19961
28345
31017
19960
19959
19958
19957
8039
8035
8029
28344
28339
8019
28338
8017
8010
8007
8004
8003
28332
28322
7999
28317
20956
7992
20945
28314
20936
20931
7986
20925
7982
7979
7978
7975
28307
7973
7966
28305
7963
28300
7961
28297
28295
7959
19948
19947
28292
31016
19946
19945
28286
7958
7956
7952
7946
28285
28283
19943
7944
7936
7931
28279
24666
24663
7928
7923
19941
28274
28257
28249
28248
7914
7912
7911
20912
7908
31755
28233
28232
28228
7903
28217
20900
24662
20891
20882
19936
20853
31011