[read.asp 문서 만들기]

게시판의 형식은 방문객이 이름과 제목과 내용을 남기면 글목록(list)에서는 제목만 보여지게 하고 제목을 클릭하면 그 내용이 보여지게하는 것이 보통이다. 따라서 우리가 이미 만들어 놓은 list.asp문서에서 제목부분에 하이퍼링크를 걸어서 제목을 클릭하면 그 내용을 보여주는 read.asp 문서를 작성한다.

생각해야 할 것 - 제목을 누르면 그에 해당하는 내용이 보여지게 하려면 하이퍼링크를 걸 때 쿼리값을 같이 전달해야 하는데 각각의 레코드들은 고유키값(일렬 번호)를 가지고 있으므로 이 킷값을 쿼리 값으로 read.asp 문서로 넘겨주고 read.asp 문서에서는 전달받은 고유키값을 가지고 레코드셋에서 이에 해당하는 키를 검색한후 그 키를 가지는 레코드에서 내용 b_comment 부분만 출력시키면 된다.

[list.asp 문서 수정하기] - 내용부분을 없애버리고 제목에 하이퍼링크를 건다.

Response.Write "<table border=1 width=500>" & _
               "<tr>" & _
               "<td align=center>이름</td>" & _
               "<td align=center>제목</td>" & _
               "</tr>"

Do while Not objRS.EOF
    Response.Write "<tr>" &_
    "<td align=center>" & objRS("b_name") & "</td>" & _
    "<td align=center><a href=./read.asp?key=" & _
    objRS("b_key") & ">" & objRS("b_title") & "</a></td>" & _
    "</tr>"
    objRS.MoveNext
Loop


위와 같이 수정한 후 브라우저로 확인하면 다음과 같다.



이제 제목을 클릭하면 read.asp가 열리고 이때 쿼리 값으로 key = "b_key" 값을 전달했다는 것을 기억한다. 그러므로 전달받은 쿼리값을 가지고 데이터베이스에서 검색을 하여 그 레코드의 내용을 화면에 뿌려주는 read.asp 문서를 다음과 같이 작성한다.

<!--METADATA TYPE= "typelib"  NAME= "ADODB Type Library"
      FILE="C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll"-->
<%
Option Explicit

Dim key
key = Request.QueryString("key")

Dim strConnect
strConnect="Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\DataStore\board.mdb"
Dim objConn,SQL,objRS
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConnect
SQL = "select * from MyBoard where b_key LIKE " & key
Set objRS = objConn.Execute(SQL)

Response.Write "<table border=1 width=500>" & _
               "<tr><td align=center>제목</td></tr>" & _
               "<tr><td align=center>" & objRS("b_comment") & "</td></tr>" & _
               "</table>"
Set objRS = nothing
Set objConn = nothing
%>


read.asp문서를 작성하고 저장한후에 list.asp 문서에서 링크된 제목부분을 클릭 하면 다음과 같은 결과가 나온다.



[설명]

이전에 설명한 list.asp 문서와 유사하다.단지 레코드셋을 얻을때 질의하는 SQL 질의문하고 출력 부분만 틀리다. SQL 질의문은 Myboard라는 테입에서 모든 정보를 선택하되 필드명이 b_key가 list.asp 문서에서 하이퍼링크로 보낸 key 쿼리값과 같은 것만 뽑으라는 것이다.

이 b_key는 고유값이므로 일치하는 레코드는 하나밖에 없다. 이 질의문을 connection 개체의 Execute로 보내면 레코드셋의 레퍼런스값을 리턴받아 objRS라는 변수에 저장한것이다. <- 이부분은 C 언어의 클래스 부분을  참고하기 바란다. C 언어를 배운적이 없거나 C 언어가 약하다면 그냥 레코드셋들의 정보를 얻는구나 하는 정보로만 이해해도 무방하다.

암튼 이렇게 하면 우린 이제 objRS라는 변수를 이용해서 그안의 정보를 모두 빼낼수있다는것이다.