Languages/ASP 2007/04/25 00:36
멀티쓰레딩 방식이 아닌 1차 Depth 형식의 답변게시판에서 이전글 / 다음글 처리 부분을 올립니다.
이것은 물론 테이블 구조를 어찌하느냐의 따라 여러가지 방법이 나올 수 있는 문제입니다.
저처럼 ASP 를 이용해서 하실 수 도 있구요. 그냥 복잡한 쿼리문을 이용해서 값을 얻던지...
아님 별도의 시퀀스필드를 두어 기냥 뽑을수도 있구요. 암튼 아래와 같은 테이블 구조일때...
seq_no display depth subject
5 5 0 히히호호
4 4 0 꽃피리.
3 3 0 이번에 신약이 나왔습니다.
6 3 1 답변인 것이었다.
2 2 0 믿습니까!
1 1 0 안녕하세요. 감사합니다 앞으로 열심히 하겠습니다. 대단히 감사합니다.
보시면 seq_no 는 데이타 삽입시마다 증가하는 값이구요.
display 는 화면에 보여줄때의 번호 입니다.
depth 는 말그대로 답변이 달릴때마다 증가하는것입니다.
위에보시면 display 가 3일때 depth 가 각각 0, 1 이 존재하시는걸 볼 수가 있을겁니다.
p.s seq_no 가 있는것은 한테이블에서 여러 게시판을 운영하다보니 키의 역활 때문입니다.
암튼... 이 상황에서 아래와 같이 구현하시면 됩니다.
<%
strQuery = "SELECT TOP 3 iMulti_no, vSubject, iDisp_no FROM multi_bulletin WHERE iDisp_no >= " &
read_disp_no & " ORDER BY iDisp_no, tDepth_no DESC"
set rs = adoConn.Execute (strQuery)
do while not rs.EOF
if rs(0) = read_multi_no then
rs.movenext
if rs.BOF or rs.EOF then
prev_subject = "더 이상 게시물이 없습니다."
exit do
else
prev_subject = "<a href=./LstRead.asp?board_id=" & req_board_id & "&no=" & rs(0)
& ">" & rs(1) & "</a>"
exit do
end if
end if
rs.movenext
loop
strQuery = "SELECT TOP 3 iMulti_no, vSubject, iDisp_no FROM multi_bulletin WHERE iDisp_no
<= " & read_disp_no & " ORDER BY iDisp_no DESC, tDepth_no"
set rs = adoConn.Execute (strQuery)
do while not rs.EOF
if rs(0) = read_multi_no then
rs.movenext
if rs.EOF then
next_subject = "더 이상 게시물이 없습니다."
exit do
else
next_subject = "<a href=./LstRead.asp?board_id=" &
req_board_id & "&no=" & rs(0) & ">" & rs(1) & "</a>"
exit do
end if
end if
rs.movenext
loop %>
[ 이전글 ] <%=prev_subject%><br>
[ 다음글 ] <%=next_subject%>
위에서 쿼리문에 쓰이는 read_disp_no 는 현재 선택한 게시물의 화면 표시용 번호를 의미합니다.
아무튼 이와같은 방법말고도 많은 방법들이 존재합니다.
그럼 도움이 되었으면 합니다.
이것은 물론 테이블 구조를 어찌하느냐의 따라 여러가지 방법이 나올 수 있는 문제입니다.
저처럼 ASP 를 이용해서 하실 수 도 있구요. 그냥 복잡한 쿼리문을 이용해서 값을 얻던지...
아님 별도의 시퀀스필드를 두어 기냥 뽑을수도 있구요. 암튼 아래와 같은 테이블 구조일때...
seq_no display depth subject
5 5 0 히히호호
4 4 0 꽃피리.
3 3 0 이번에 신약이 나왔습니다.
6 3 1 답변인 것이었다.
2 2 0 믿습니까!
1 1 0 안녕하세요. 감사합니다 앞으로 열심히 하겠습니다. 대단히 감사합니다.
보시면 seq_no 는 데이타 삽입시마다 증가하는 값이구요.
display 는 화면에 보여줄때의 번호 입니다.
depth 는 말그대로 답변이 달릴때마다 증가하는것입니다.
위에보시면 display 가 3일때 depth 가 각각 0, 1 이 존재하시는걸 볼 수가 있을겁니다.
p.s seq_no 가 있는것은 한테이블에서 여러 게시판을 운영하다보니 키의 역활 때문입니다.
암튼... 이 상황에서 아래와 같이 구현하시면 됩니다.
<%
strQuery = "SELECT TOP 3 iMulti_no, vSubject, iDisp_no FROM multi_bulletin WHERE iDisp_no >= " &
read_disp_no & " ORDER BY iDisp_no, tDepth_no DESC"
set rs = adoConn.Execute (strQuery)
do while not rs.EOF
if rs(0) = read_multi_no then
rs.movenext
if rs.BOF or rs.EOF then
prev_subject = "더 이상 게시물이 없습니다."
exit do
else
prev_subject = "<a href=./LstRead.asp?board_id=" & req_board_id & "&no=" & rs(0)
& ">" & rs(1) & "</a>"
exit do
end if
end if
rs.movenext
loop
strQuery = "SELECT TOP 3 iMulti_no, vSubject, iDisp_no FROM multi_bulletin WHERE iDisp_no
<= " & read_disp_no & " ORDER BY iDisp_no DESC, tDepth_no"
set rs = adoConn.Execute (strQuery)
do while not rs.EOF
if rs(0) = read_multi_no then
rs.movenext
if rs.EOF then
next_subject = "더 이상 게시물이 없습니다."
exit do
else
next_subject = "<a href=./LstRead.asp?board_id=" &
req_board_id & "&no=" & rs(0) & ">" & rs(1) & "</a>"
exit do
end if
end if
rs.movenext
loop %>
[ 이전글 ] <%=prev_subject%><br>
[ 다음글 ] <%=next_subject%>
위에서 쿼리문에 쓰이는 read_disp_no 는 현재 선택한 게시물의 화면 표시용 번호를 의미합니다.
아무튼 이와같은 방법말고도 많은 방법들이 존재합니다.
그럼 도움이 되었으면 합니다.
http://jiny.kr/trackback/98


0