티스토리 뷰

거의 모든 페이지의 구성이


리스트

: 어떤 결과를 보여주는 부분 두가지 조건이 존재한다.

  1. 페이지가 있는 리스트

  2. 글수정 처럼 페이지가 없이 화면에 노출


쓰기

: 특정 데이터를 받기위한 입력폼. 게시판에서 글쓰기, 회원가입양식, 이벤트 참여 등


저장

: 입력받은 데이터를 용도에 맞게 저장함




이런 구성이지 않을까 한다.

앞에서 이야기 했듯, 리스트는

대부분 DB와 연동해서 작성한다. 아닌게 모가 있을까??;;;


db쪽을 들어가야지 되는데, 귀찮아서 아직 못하고 있다.

그래서 이곳에서 MS-SQL 2005이상에서 일반적으로 사용하는 페이지를 할려고 한다.


페이지 처리를 할때 이전에 이야기 했듯이 전체 페이지가 필요하고, 현재 페이지가 필요하다.



' ########## 검색관련 쿼리만들기

' 등록일

If StartDate <> "" And EndDate <> "" Then

SQLSUB = SQLSUB & "And A.regDate Between '"&StartDate&"' And '"&EndDate&"'" & vbCrLf

End If



' ########## 페이지 처리 [20개를 리스팅 할 것임]

PageSize = 20

GotoPage = ReplaceValue(Request("GotoPage"))

If IsNull(GotoPage) Or GotoPage = "" Then GotoPage = 1


' ########## 총 게시물수

SQLCNT = "SELECT" & vbCrLf

SQLCNT = SQLCNT & "      COUNT(1)" & vbCrLf

SQLCNT = SQLCNT & " FROM" & vbCrLf

SQLCNT = SQLCNT & "      테이블이름 A WITH(READUNCOMMITTED)" & vbCrLf   ' 테이블이름 A 이 부분은 테이블에 해당하는 컬럼을 호출할때 A.테이블컬럼..... 나중에 DB에서..

SQLCNT = SQLCNT & " WHERE" & vbCrLf

SQLCNT = SQLCNT & "     isStatus = 'Y'" & vbCrLf

SQLCNT = SQLCNT & SQLSUB & vbCrLf  ' 이 부분은 검색을 위에서 SQLSUB라는 변수에 저장했을때 사용함.

Set Rs = Conn.Execute(SQLCNT)

If Not(Rs.EOF Or Rs.BOF) Then

     TotalRecordCount = Rs(0)

End If

Rs.Close : Set Rs = Nothing


' ########## 리스트 가져오기

SQLSTR = "SELECT" & vbCrLf

SQLSTR = SQLSTR & " 가지고온 컬럼 리스트들" & vbCrLf

SQLSTR = SQLSTR & "FROM" & vbCrLf

SQLSTR = SQLSTR & "(" & vbCrLf

SQLSTR = SQLSTR & " SELECT" & vbCrLf

SQLSTR = SQLSTR & " ROW_NUMBER() OVER(ORDER BY A.tblProductIDX DESC) AS ROWNUM," & vbCrLf

SQLSTR = SQLSTR & " 가지고올 컬럼 리스트들" & vbCrLf

SQLSTR = SQLSTR & " FROM" & vbCrLf

SQLSTR = SQLSTR & " 테이블이름 A With(ReadUnCommitted)" & vbCrLf

SQLSTR = SQLSTR & " WHERE" & vbCrLf

SQLSTR = SQLSTR & " A.isStatus = 'Y'" & vbCrLf

SQLSTR = SQLSTR & SQLSUB & vbCrLf

SQLSTR = SQLSTR & ")A" & vbCrLf

SQLSTR = SQLSTR &"WHERE ROWNUM BETWEEN ((("&GotoPage&" - 1) * "&PageSize&") + 1) AND ("&GotoPage&" * "&PageSize&") "& vbCrLf

Set Rs = Conn.Execute(SQLSTR)

If Not(Rs.EOF Or Rs.BOF) Then

     Arr_List01 = Rs.GetRows()

End If

RsClose()




row_number() over 가 2005부터 적용된다.

2000에서는 오류남.. 그런데. 10년이 넘은 DB를 사용하는 곳이 있을까? 하다가 있구나.~;;;



' ########## 페이지 처리하기

If TotalRecordCount Mod PageSize = 0 Then

TotalPageCount = fix(TotalRecordCount / PageSize)

Else

TotalPageCount = fix(TotalRecordCount / PageSize) + 1

End If



총 페이지수  =  총게시물수 / 몇페이지씩 시스팅


이 부분을 for문과 결합해서


<%

If IsArray(Arr_List01) Then

For i = 0 To UBound(Arr_List01, 2)

Select Case Trim(Arr_List01(7, i))

Case "ST"

saleStore = "판매대기"

Case "SA"

saleStore = "판매중"

Case "SW"

saleStore = "판매일시중지"

Case "ED"

saleStore = "판매종료"

End Select

Select Case Trim(Arr_List01(6, i))

Case "C"

costType = "유료"

Case "F"

costType = "무료"

End Select

%>

<tr>

<td><strong class="fontBlue"><%=Arr_List01(0, i)%></strong></td>

<td><%=productTypeTxt%></td>

<td><%=stType%></td>

<td><%=areaType%></td>


<td class="left"><a href="productForm.asp?tblProductIDX=<%=Arr_List01(0, i)%>&GotoPage=<%=GotoPage%>&<%=PageParam%>"><%=Arr_List01(1, i)%></a></td>


<td><%=costType%></td>

<td><%=saleStore%></td>

<td>

<% If Arr_List01(4, i) <> Arr_List01(5, i) Then %>

<strike><%=FormatNumber(Arr_List01(4, i), 0)%></strike>

<% Else %>

<%=FormatNumber(Arr_List01(4, i), 0)%>

<% End If %>

<br />

<%=FormatNumber(Arr_List01(5, i), 0)%>

</td>

<td><%=DateHard(Arr_List01(8, i), 33)%></td>

<td class="fontBlue"><a href="#" target="_blank">GO</a></td>

</tr>

<%

Next

Else

%>

<tr>

<td colspan="10">등록된 상품이 없습니다.</td>

</tr>

<% End If %>





이렇게 페이지에 대한 설정을 하고


데이터를 가져온다.2가지 1. 총 게시물수 / 2. 해당 페이지에 뿌릴 내용


3. 리스트 만들기



이게 다임.