카

asp 저장하기

· 2009-06-15 (월) 20:54:51 · 2953
 arrow_dot.gif 글저 장하기
line_450.gif
 
  이제 앞에서 배운 글쓰기에서 전송한 데이터를 저장해 보도록 하겠습니 다.
  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
  '지정한 쿼리로 데이터베이스를 연결해서 레코드셋 개체에 결과값을 저장합니다.
  %>
 
line_450.gif
  arrow_dot.gif 여기 서.. 잠깐... Tip!!
line_450.gif
 
  위에 소스를 보시면.. 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이름이 바뀌는것입니다.
  하하.. 이해가 되셨는지.. 모르겠네요.. ^^
 
line_450.gif
 
  쿼리의 결과가 불러져 왔습니다.
  하지만, 이 쿼리의 결과로는 아무 데이터도 얻지 못합니다. 왜냐하면 아직 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 기타에서 이동 됨]
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
11-10-25 조회 2,457
11-10-18 조회 3,980
11-10-18 조회 2,353
11-10-15 조회 3,553
11-10-10 조회 2,623
11-10-02 조회 2,545
11-09-28 조회 2,370
11-09-24 조회 2,447
11-09-22 조회 2,354
11-09-05 조회 2,837
11-08-31 조회 2,209
11-08-31 조회 2,510
11-08-31 조회 2,366
11-08-29 조회 2,932
11-08-28 조회 2,411
11-08-25 조회 2,463
11-08-17 조회 2,202
11-08-16 조회 2,414
11-08-11 조회 2,878
11-08-07 조회 2,578
11-08-03 조회 2,300
11-07-22 조회 2,047
11-07-12 조회 3,265
11-06-27 조회 2,055
11-06-01 조회 1,728
11-05-17 조회 2,505
11-05-01 조회 2,575
11-04-28 조회 2,860
11-04-28 조회 2,911
11-04-13 조회 2,567
11-03-27 조회 2,693
11-03-27 조회 2,575
11-03-14 조회 1,989
11-03-02 조회 2,308
11-03-02 조회 2,545
11-02-27 조회 2,975
11-02-23 조회 2,351
11-02-19 조회 2,497
11-02-14 조회 4,112
11-02-03 조회 2,905
11-01-24 조회 3,847
11-01-04 조회 2,373
10-12-08 조회 5,377
10-11-15 조회 2,378
10-11-14 조회 2,552
10-11-14 조회 3,578
10-10-29 조회 3,660
10-10-19 조회 2,667
10-10-07 조회 2,501
10-10-05 조회 4,402
10-09-18 조회 2,696
10-09-18 조회 2,457
10-09-17 조회 4,844
10-09-15 조회 2,795
10-09-15 조회 2,322
10-09-15 조회 2,789
10-09-15 조회 2,631
10-09-11 조회 3,958
10-09-11 조회 2,470
10-09-11 조회 2,502
10-09-07 조회 3,778
10-09-07 조회 3,320
10-08-29 조회 2,775
10-07-01 조회 3,031
10-06-30 조회 2,429
10-06-30 조회 2,611
10-06-30 조회 2,969
10-06-13 조회 1,994
10-04-15 조회 3,167
10-04-04 조회 3,392
10-02-23 조회 3,483
10-02-09 조회 3,112
10-01-25 조회 2,603
10-01-25 조회 2,705
09-12-27 조회 4,360
09-11-23 조회 3,574
09-11-20 조회 4,817
09-08-30 조회 3,008
09-08-30 조회 3,012
09-08-12 조회 2,959
09-07-22 조회 4,034
09-07-22 조회 4,685
09-07-15 조회 5,855
09-07-11 조회 2,928
09-06-17 조회 2,679
09-06-15 조회 2,954
09-05-29 조회 3,232
09-05-11 조회 5,875
09-05-08 조회 2,626
09-04-30 조회 3,746
09-04-17 조회 3,063
09-04-04 조회 3,240
09-03-05 조회 3,626
09-02-09 조회 3,602
09-02-03 조회 6,104
08-12-27 조회 3,178
08-12-20 조회 4,267
08-11-21 조회 5,226
08-11-14 조회 2,798
08-11-03 조회 3,248