List.asp (글 목록 페이지)

<%
    Dim intNowPage, intTotalCount, intTotalPage, intBlockPage, intPageSize
    Dim intTemp, intLoop
    Dim strSearchWord, strSearchString, strSearchSQL
    Dim blnSearch

    intNowPage = Request.QueryString("page")
    strSearchWord = Request.QueryString("search_word")
    strSearchString = Request.QueryString("search_string")
    blnSearch = false
    intPageSize = 10
    intBlockPage = 5

    If Len(intNowPage) = 0 Then
        intNowPage =1
    End If

    If Len(strSearchString) <> 0 Then
        blnSearch = true
        strSearchSQL = " Where " & strSearchWord
        strSearchSQL = strSearchSQL & " like '%" & strSearchString & "%'"
    End If

    sql = "SELECT COUNT(*), CEIL(CAST(COUNT(*) AS FLOAT)/" & intPageSize & ") FROM BOARD"
    If blnSearch Then
        sql = sql & strSearchSql
    End If

    Set oraConn = Server.CreateObject("ADODB.Connection")
    oraConn.Open("dsn={DB};uid={id};pwd={pwd}")

    Set oraRec = Server.CreateObject("ADODB.Recordset")

    oraRec.Open sql, oraConn

    intTotalCount = oraRec(0)
    intTotalPage = oraRec(1)
    oraRec.Close

    sql = "select * from (select rownum as rnum, z.* from (select * from board "
    If blnSearch Then
        sql = sql & strSearchSQL
    End If
    sql = sql & " order by refer desc, step) z where rownum <=" & intPageSize * intNowPage & ")where rnum >= " & intPageSize * (intNowPage -1) + 1

    oraRec.Open sql, oraConn
%>

 

[페이징 기능을 위해 필요한 변수]

intNowPage : 현재 페이지가 몇 번째 페이지인지 나타내는 변수

intTotalCount : 전체 게시물의 갯수

intTotalPage : 총 페이지의 수

intBlockPage : 페이지를 몇 개씩 구분할 것인지 (이전 O개, 다음 O개 할 때 사용) 나타내는 변수

intPageSize : 한 페이지에 몇 개의 게시까지 보이게 할지를 결정하는 변수

intTemp, intLoop : Do ~ Loop 문을 돌때마다 증가되는 임시로 사용되는 정수형 변수

 

[검색 기능을 위해 필요한 변수]

strSearchWord : 검색 조건

strSearchString : 검색어

strSearchSQL : 검색에 관련된 조건문을 추가할 때 붙을 SQL문이 들어갈 변수

blnSearch : 검색이 실행되었는지(true) 아닌지(false)를 나타내는 변수 (처음엔 false로 지정)

 

7) 현재의 페이지가 몇 페이지인지를 받아오는 부분.

8) 검색 조건을 받아오는 부분

9) 검색어를 받아오는 부분 

14) intNowPage 변수에 값이 없으면 현재 페이지를 1로 지정. Len( ) 함수 : 괄호 안에 있는 문자열의 길이(글자의 갯수)를 반환

18) strSearchString 변수에 값이 들어있으면 blnSearch 를 true(검색 실행) 으로 변경 후 strSearchSQL 쿼리문 입력

24) CEIL( ) 함수 : 괄호 안에 들어있는 지정한 숫자 식보다 크거나 같은 최소 정수를 반환

CAST(내용 AS 변환하려는 형식) 함수 : '내용' 에 해당하는 문장을 '변환하려는 형식'에 맞게 변환

SELECT COUNT(*), CEIL(CAST(COUNT(*) AS FLOAT) / intPageSize) FROM BOARD

 

36) COUNT(*) 을 intTotalCount 에 저장

37) CEIL(CAST(COUNT(*) AS FLOAT) / intPageSize) 을 총 페이지의 수 intTotalPage 에 저장

38) oraRec을 close 해줘야 46)에서로젝트 기획

41) blnSearch 가 true(검색이 실행) 이면 sql문에 strSearchSQL 을 ORDER BY 절 전에 추가

+ Recent posts