asp 목록보기
글 목 록보기
이제 글도 저장하고 했으니.. 목록을 만들어 보도록 하죠..
일단.. DB 에 저장된 정보를 불러와야 해요.. ADO 를 사용해서 불러올겁니 다.
우선.. 들어가기에 앞서..
사용자들에게 보여질 화면구성을 HTML로 제작한 다음에, ASP 를 코딩하는것 이 좋을거라고 생각이 됩니다.
그럼.. 여러분이 보기좋게 list 페이지를 구성합니다. 다 하셨다면.. 이제 목록페이지를 만들어보도록하겠습니다.
<%
table = request("table")
'Get 방식으로 넘어온 table값을 변수 table 에 저장 합니다.
if table <> "" then
'table 변수에 저장된 값이 없지 않다면.. 쉽게.. 저 장된 값이 있으면..
session("table")= table
'table 변수에 저장된 값을 Session 변수에 넣어줍니다.
end if
if session("table")="" then
'Session변수에 저장된 값이 없을 때..
response.redirect "board.asp"
'board.asp 파일로 이동시킵니다.
end if
%>
INNO BOARD 는 다중게시판입니다. 첨에 목록페이지를 불러올때 GET방식으로 넘어온 테이블 값을 받습니다. 이 값이 변경됨에 따라 서로 한 소스로 여러 게시판을 운영할 수 있는거죠.
Session 변수로 각 테이블을 기억하구요.. 그 변수가 해제되었을경우, 다시 Session 을 설정해 주기위해 board.asp 파일로 이동시키는거죠.
만약, Session 변수가 해제 되었음에도 불구하고, 계속 사용한다면.. Error 가 발생하겠죠? 그걸 막아주기위해 board.asp로 가는겁니다. 조금은 이해가 되셨는지요?
<%
block = request("block")
page = Request("page")
if block = "" then
block=0
end if
if (page = "") then
page = 1
end if
%>
위의 소스 부분은 나중에 유용하게 쓰입니다. 어디에 쓰이느냐...
궁금하시죠??? 아시는 분은 다 아실거라 생각합니다.
바로 페이지셋에 관한 부분입니다.
[이전 10개] [1 2 3 4] [다음 10개]
바로.. 이부분을 위한 것이지요..
이부분은 나중에 페이지셋을 할때 다시 나오니까..
그때 다시 보도록하고.. 넘어가도록 하겠습니다.
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open dbname
SQL = "SELECT * FROM " & session("table") & " order by re desc, reid asc"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.PageSize = "" & pagesize & ""
rs.Open SQL,db,1
%>
이번엔 DB 연결 부분입니다. 이 부분은 앞 강좌(글저장하기)에서 나왔었죠?
그런데 달라진 점이 있다면, 위의 소스중에..
SQL = "SELECT * FROM ... order by re desc, reid asc"
진하게 표시된 부분입니다.
저부분은 목록을 정리하기 위한 겁니다. 지금부터 알면 좀 복잡해지겠죠?
나중에 다시 알아보도록하고.. 이부분도 넘어갑니다.
<script language="javascript">
<!--
function login(){
window.open ('login.asp','inno','width=330,height=160,toolbar=no,scrollbars=no');
}
function OpenWindow(url,intWidth,intHeight) {
window.open (url, "inno", "width="+intWidth+",height="+intHeight+",resizable=1,scrollbars=1") ;
}
function submit()
{
if (document.inno.search.value == "") {
alert("검색어를 입력해 주세요.");
document.inno.search.focus();
return;
}
document.inno.submit();
}
//-->
</script>
이 부분은 나중에 글읽기에서 새창을 띄워서 볼것이기때문에요.. 새창을 띄 우는 자바스크립트를 소스를 적어줍니다.
그리고 검색를 할때 input 입력란에 검색어를 적었는지 안적었는지.. 확인하 는 스크립트도 있죠? 이 스크립트는 앞에 글쓰기 폼에서 배웠습니다.
그 다음은 글이 저장이 되어 있지 않을때 에러를 발생하는걸 막기 위한 부분 입니다.
데이터가 아무것도 없을때 아래의 소스가 있지 않다면.. 분명히 list.asp 를 불러왔을때 에러를 발생시킬겁니다.
그래서 if 문을 사용하여 에러를 막아줍니다. 어떻게 막아주느냐..
아래의 소스를 보도록 하죠..
<% if rs.BOF or rs.EOF then %>
저장된 데이터가 없습니다.
<% else %>
.. 게시판 목록출력 부분이 들어가는 곳이죠 ..
<% end if %>
rs는 우리가 쿼리한 결과 데이터를 가지고 있는 레코드셋입니다. 레 코드셋 개체의 메소드 중에는 EOF(End Of File)와 BOF(Begin Of File) 가 있습 니다. 레코드의 끝과 처음이라는 의미죠.
즉, 위 문장의 의미는 현재의 레코드셋의 위치가 '레코드의 시작 위치이거 나 레코드셋의 마지막 위치라면' 라는 의미로, 아무 레코드가 없다면 이라는 말고 같은 말이 죠.. 만일 레코드가 없다면 '저장된 데이터가 없습니다.' 라는 문장을 출력해주고 있음을 알 수가 있습니다.
자세한건... list.asp 파일의 소스를 보시면 알 수 있겠죠??
이제 본격적으로 리스트 페이지를 만들어 보도록 하겠습니다.
좀 헤갈리는 분들은 list.asp 파일의 전체 소스를 보시면서 하시면 그나마 이해하시는데 좋을 듯 싶네요..^^
<%
else
rs.Move rs.PageSize * (page-1)
'레코드의 커서를 지정한 페이지의 제일 상단으로 옮 깁니다.
record = rs.RecordCount
'현재 저장되어 있는 레코드 수를 record 변수에 저 장합니다.
pagecount = rs.pagecount
'Pagesize에 맞춰 나누어진 레코드의 총 페이지수를 pagecount에 저장합니다.
rs.AbsolutePage = page
'pagecount 페이지수 중에 현재 보고 있는 페이지를 page 변수에 저장합니다.
%>
위의 소스와 아래의 소스 중간 부분에는 목록의 HTML 화면구성부분이 들어가 죠..
<%
i = 1
Do until rs.EOF Or i > rs.PageSize
name = rs("name")
title = rs("title")
writeday = left(rs("writeday"),8)
tag = rs("tag")
'불러온 데이터를 각각의 변수에 저장합니 다.
if left(now,2) = "20" then
nowday = mid(now,3)
else
nowday = now
end if
if tag = "ok" then
'글저장시 HTML 적용시
title = CheckWord(title)
If Len(title) > 30 Then
title = Mid(title,1,31) & ".."
End If
'제목이 길어질 경우 30자 넘으면 그 이후의 글자 는 ',,'으로 대신합니다.
else
title = replace(title,""","'")
If Len(title) > 20 Then
title = Mid(title,1,21) & ".."
End If
'위에서 설명했으니 아시겠죠?
end if
If Len(name) > 4 Then
name = Mid(name,1,5) & ".."
End If
'이것두 위에서 설명했으니 아시겠죠?
%>

여기 서.. 잠깐... Tip!!
소스에 나와있긴하지만.. Tip 이긴 Tip 이니까.. 하하.. ^^
<% if DateDiff("d",rs("writeday"),nowday) < 2 then %>
바로 이부분인데요..
이 부분은 새로운 글이 올라왔을때 새글이라고 표시할때 쓰입니다.
DateDiff 는 두 시간을 비교하는 함수 입니다.
DateDiff("모드",비교1,비교2)
| 모 드 | 설 명 | 모 드 | 설 명 |
| yyyy | 년 | w | 요일 |
| q | 분기 | ww | 주(일년기준) |
| m | 월 | h | 시 |
| y | 일(일년기준) | n | 분 |
| d | 일 | s | 초 |
그래서 위의 소스를 보면..
rs("writeday") 와 현재의 시간인 nowday 를 비교해서 그 사이의 일 (day).. 날짜가 2일전이라면 최근의 글이라는걸 나타내고, 2일이 지났다면 최근의 글이 아니라 는것을 나타냅니다.

<%
rs.Movenext
i = i + 1
Loop
%>
이 부분은 조금 위에서 사용한 do until 문을 만족시켜줄때까지 반복시켜주 는 소스입니다.
이제 여기까지만 하면 목록을 보여지는데에는 아무 문제가 없습니다.
이제 남은건 페이지셋처리입니다.
<%
total_block = int(pagecount / pageset)
if (pagecount mod pageset) > 0 then
total_block = total_block + 1
end if
total_block = total_block - 1
%>
<% if pagecount > 0 then %>
[
<% if block > 0 then %>
<a href="list.asp?page=<%=(pageset*(block-1)+1)%>&block=<%= (block-1)%>">
<% end if%>
이전 <%=pageset%>개
<% if block >0 then %>
</a>
<%end if%>
]
<% if Cint(total_block) <> Cint(block) then %>
[
<% for Gopage = 1 to pageset %>
<% if int(block*pageset) + Gopage = Cint(page) then %>
<font color=silver><%=(int(block*pageset) + Gopage)% ></font>
<%else%>
<a href="list.asp?block=<%=block%>&page=<%=(int (block*pageset) + Gopage)%>">
<%=(int(block*pageset) + Gopage)%>
</a>
<% end if%>
<% next %>
]
<% else %>
<%
if (pagecount mod pageset) = 0 then
lastpage= pageset
else
lastpage = pagecount mod pageset
end if
%>
[
<% for Gopage = 1 to lastpage %>
<% if int(block*pageset) + Gopage = Cint(page) then %>
<font color=silver><%=(int(block*pageset) + Gopage)% ></font>
<%else%>
<a href="list.asp?block=<%=block%>&page=<%=(int(block*pageset) + Gopage)%>">
<%=(int(block*pageset) + Gopage)%>
</a>
<% end if %>
<% next %>
]
<% end if %>
[
<% if (Cint(total_block) > 0) and (Cint(block) < Cint (total_block)) then %>
<a href="list.asp?block=<%=block+1%>&page=<%=(pageset* (block+1)+1)%>">
<%end if%>
다음 <%=pageset%> 개
<% if (Cint(total_block) > 0) and (Cint(block) < Cint (total_block)) then %>
</a>
<%end if%>
]
<% end if %>
이 부분은 초보 여러분들은 힘이 들거라 생각합니다.
약간 복잡하다는 생각이 들긴하지만.. 계속 보다가 보면.. 어떻게 되는건지 알 수 있을겁니다.
이걸 다 설명할려니.. 좀 복잡해서요.. 이해해 주세요.. ^^
나중에 시간이 되면.. Tip&Tech 코너에 올려놓도록하겠습니다.
위처럼 코딩을 하면.. [이전 10개] [1 2 3 4 5] [다음 10개] 부분은 끝이납니다.
이제 마지막 부분인 [맨끝 글보기] [이전글보기] [글쓰기] [다음글보기] [맨끝 글보기] 의 버튼만 만들어서 링크만 시켜주시면 되겠죠??
이걸로써.. 목록보기의 강좌를 마칩니다.
[이 게시물은 관리자님에 의해 2011-10-31 16:46:12 기타에서 이동 됨]
게시글 목록
| 번호 | 제목 |
|---|---|
| 29416 | |
| 13230 | |
| 13227 | |
| 13226 |
JavaScript
PHP 이미지 지원 함수
|
| 13225 | |
| 13224 |
MySQL
심플쪽지2.0n
|
| 25107 | |
| 13219 |
JavaScript
iframe 외부의 부모 값에 접근.
4
|
| 13218 |
jQuery
select plugin
|
| 13216 | |
| 13211 | |
| 13210 | |
| 29415 |
HTML
prototype API
|
| 13204 | |
| 13202 |
jQuery
이미지 리사이즈 jQuery 로 변경 방법
1
|
| 29411 | |
| 13199 | |
| 13196 |
기타
tar 복사
2
|
| 13192 |
jQuery
jQuery 셀렉트 박스 입니다.
3
|
| 13191 | |
| 13189 | |
| 13186 | |
| 29408 | |
| 13185 |
jQuery
jQuery plugin Editors
|
| 13183 |
jQuery
jQuery 그래프 애니메이션
1
|
| 13178 | |
| 13173 |
기타
이번달 일수 구하기
4
|
| 13166 |
jQuery
SIR 메인에 사용된 jQuery widget
6
|
| 13165 |
기타
property 구현
|
| 13163 |
JavaScript
한글만 입력되게
1
|
| 13162 |
기타
휴대폰번호 검사
|
| 13157 | |
| 13153 |
jQuery
이미지 없으면 자동으로 No Image 출력
3
|
| 13149 |
JavaScript
a 링크 점선 없애기, input+label 묶기
3
|
| 13144 |
jQuery
ifrmae 자동 리사이즈
4
|
| 13142 | |
| 13141 | |
| 13140 |
jQuery
jquery 예
|
| 13138 | |
| 13137 |
MySQL
insert에서 where 사용하기
|
| 13136 |
MySQL
MySQL Database 언어코드 수정하기
|
| 25102 | |
| 13135 |
jQuery
회원가입 아이디 체크부분 jQuery 버젼
|
| 13132 |
jQuery
jQuery History & Bookmark
2
|
| 13131 |
jQuery
스포일러 기능~
|
| 13130 |
jQuery
이미지를 순서대로 로딩하기
|
| 13128 |
jQuery
jQuery 페이징
1
|
| 13125 |
jQuery
폼 입력값 검사
2
|
| 13117 |
JavaScript
간단한 서브메뉴 onmouseover 이벤트 팁
7
|
| 13116 | |
| 13114 |
jQuery
jQuery Cheat sheet
1
|
| 13113 | |
| 13109 |
jQuery
간단한 풍선도움말
3
|
| 13106 |
jQuery
자동등록방지 코드
2
|
| 13105 | |
| 13103 | |
| 13102 |
JavaScript
클릭으로 수량 조절
|
| 13099 |
jQuery
AJAX Libraries API -- 구글
2
|
| 13096 | |
| 13091 |
jQuery
jQuery 동적테이블
4
|
| 29404 | |
| 13090 | |
| 13087 |
JavaScript
검색엔진에 노출을 못하게 하는 방법
2
|
| 29400 | |
| 13085 | |
| 13082 | |
| 29398 | |
| 13081 |
JavaScript
페이지 인쇄할때 자동으로 다음장 인쇄 기능
|
| 13080 |
기타
특정문자 제거하기
|
| 13077 |
JavaScript
숫자만 입력되게 하기
2
|
| 25097 | |
| 13076 | |
| 13075 |
기타
팝업뛰우기
|
| 13072 |
JavaScript
접속시 우측 하단에 메시지 나타나게 하기
2
|
| 13071 |
MySQL
phpMyAdmin 3.0 설치 방법
|
| 29397 |
HTML
글자수 제한시켜 짜르기
|
| 13069 | |
| 13068 | |
| 13063 | |
| 13060 |
JavaScript
ezPrice 금액 입력 도우미
2
|
| 25092 | |
| 25091 | |
| 25090 | |
| 13056 |
MySQL
FOUND_ROWS()
3
|
| 13055 | |
| 13054 | |
| 29396 |
HTML
레이어 스부적스부적 이동 스크립트
|
| 13045 | |
| 13042 | |
| 13026 | |
| 13022 | |
| 13017 | |
| 13013 |
PHP
정규식 질문드립니다.
3
|
| 13008 | |
| 13002 |
PHP
태그변환 정규식
5
|
| 12998 | |
| 25083 | |
| 12997 | |
| 29394 | |
| 29392 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기