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 절 전에 추가
'프로그램 > ASP' 카테고리의 다른 글
[ASP] ASP와 DB연결 방법 (ODBC 사용) (0) | 2021.04.22 |
---|---|
[ASP] 게시판 만들기 3 - 글 목록(list.asp) (0) | 2021.04.14 |
[ASP] 게시판 만들기 1 - 프로젝트 기획, DB테이블 구성 (0) | 2021.04.02 |
[ASP] 디렉토리 목록 얻어오기, DB값 테이블로 출력하기 (0) | 2021.03.10 |
[ASP] DB 예제 : 데이터 여러 개 출력하기 (0) | 2021.03.09 |