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 기타에서 이동 됨]
게시글 목록
| 번호 | 제목 |
|---|---|
| 12995 | |
| 12994 | |
| 12993 |
JavaScript
[SQL]Delete문
|
| 29390 |
HTML
[SQL]Update문
1
|
| 29389 |
HTML
[SQL]Insert 문
|
| 12992 |
JavaScript
[SQL]등록/수정/삭제 전에 알아둘 사항
|
| 12991 | |
| 29388 |
HTML
[SQL]Table 만들기
|
| 29387 |
HTML
[SQL]SQL의 기초 (3)
|
| 29386 |
HTML
[SQL]SQL의 기초 (2)
|
| 29384 |
HTML
[SQL]SQL의 기초 (I)
1
|
| 29383 |
HTML
[SQL]DATABASE의 구조
|
| 29382 | |
| 25079 |
마케팅
마케팅 전략 ppt자료
3
|
| 12989 |
MySQL
php 에서 자바스크립트로 배열 보내기
1
|
| 12988 |
기타
이벤트 객체
|
| 25070 | |
| 12987 | |
| 29381 | |
| 12986 |
JavaScript
에디터로 작성한 게시물에서 특정태그없애기
|
| 12985 |
PHP
롤링배너객체 Rolling
|
| 12984 |
JavaScript
간단하게 만들어본 메일전송 클래스
|
| 12979 |
JavaScript
24시간 이내에 수정된 php 파일만 찾기
4
|
| 12978 |
Flash
무툴즈를 이용한 플래시 비슷한 탑메뉴~~~
|
| 12977 | |
| 12973 | |
| 12972 | |
| 12971 | |
| 29380 |
HTML
클릭해서 이미지 팝업 뛰우기.
|
| 12969 | |
| 12968 |
Flash
플래시에 가려진 레이어 올려봅시다.
|
| 12967 | |
| 29379 |
HTML
부끄럽네요. 로그인아웃 표시
|
| 12965 |
기타
PHP 전역변수
1
|
| 12963 |
기타
PHP 배열변수
1
|
| 29378 |
HTML
PHP 변수사용법
|
| 12962 |
기타
PHP 기본구조
|
| 12960 |
Linux
리눅스 자바설치
1
|
| 29377 |
HTML
TAR명령. TAR압축묶기 압축풀기
|
| 12958 | |
| 12955 |
MySQL
ncftp 를 이용한 백업 스크립트
2
|
| 12954 |
기타
ftp 업로드 자동
|
| 12951 |
JavaScript
리눅스 시스템 시간 확인 및 시간 맞추기
2
|
| 12950 |
Linux
리눅스 한글 설정
|
| 12949 |
MySQL
리눅스 한글설정관련_locale
|
| 12946 |
MySQL
웹호스팅 사용자를 위한 계정관리 스크립트
2
|
| 12945 | |
| 12941 | |
| 12939 |
기타
리눅스 시간맞추기
1
|
| 12938 |
기타
리눅스 기본명령어들
|
| 12936 | |
| 12931 | |
| 29376 |
HTML
윈도우2003서버 관리
|
| 12928 | |
| 29375 | |
| 12927 |
JavaScript
간단한 텍스트 스크롤
|
| 12926 | |
| 12923 |
MySQL
mysql 5.0.x 공백문자인식
2
|
| 12921 | |
| 12918 | |
| 12917 | |
| 12914 | |
| 12909 |
정규표현식
정규표현식 튜토리얼
4
|
| 12906 | |
| 12903 | |
| 12902 |
JavaScript
확장자 bak 파일 지우기
|
| 298 | |
| 12901 |
JavaScript
프로젝트의 구축 방법에 관한 내용입니다.
|
| 12891 | |
| 12888 |
Flash
[질문] 플래시 메뉴를 통한 링크...
2
|
| 12886 | |
| 295 | |
| 12885 |
Flash
flv 플레이어 자막연동 보드 완성 하였음
|
| 12883 |
JavaScript
flv 동영상 자막 싱크만드는 중입니다. txt 연동
1
|
| 12881 |
Flash
풀 플래시 소스
1
|
| 292 | |
| 12880 | |
| 290 | |
| 287 | |
| 12879 | |
| 285 | |
| 12875 | |
| 12872 | |
| 280 | |
| 12857 | |
| 276 | |
| 275 | |
| 25063 |
계약서
홈페이지 관리계약서
6
|
| 271 | |
| 29369 |
HTML
제가 그린 일러스트입니다.
5
|
| 268 | |
| 267 | |
| 12852 |
JavaScript
원격이미지 조건에 따른 썸네일 생성
4
|
| 12851 |
JavaScript
윈도우 APM 에서 리눅스의 심볼릭 링크 사용하기
|
| 265 | |
| 263 | |
| 12844 |
Flash
도와주세요~
6
|
| 260 | |
| 12841 |
JavaScript
사진 뽀샤시 ~~
2
|
| 12834 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기