글 목 록보기
이제 글도 저장하고 했으니.. 목록을 만들어 보도록 하죠..
일단.. 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 기타에서 이동 됨]
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 2630 |
|
15년 전 | 814 | |
| 2629 | 15년 전 | 888 | ||
| 2628 | 15년 전 | 1084 | ||
| 2627 | 15년 전 | 1772 | ||
| 2626 |
angpang
|
15년 전 | 1091 | |
| 2625 |
|
15년 전 | 1180 | |
| 2624 | 15년 전 | 957 | ||
| 2623 | 15년 전 | 895 | ||
| 2622 | 15년 전 | 1269 | ||
| 2621 | 15년 전 | 1737 | ||
| 2620 | 15년 전 | 1010 | ||
| 2619 | 15년 전 | 1347 | ||
| 2618 |
terrorboys
|
15년 전 | 1619 | |
| 2617 |
mummy
|
15년 전 | 972 | |
| 2616 | 15년 전 | 901 | ||
| 2615 |
windday
|
15년 전 | 1052 | |
| 2614 | 15년 전 | 1102 | ||
| 2613 | 15년 전 | 926 | ||
| 2612 | 15년 전 | 1196 | ||
| 2611 | 15년 전 | 1282 | ||
| 2610 | 15년 전 | 1214 | ||
| 2609 | 15년 전 | 3129 | ||
| 2608 |
DiZiNOr
|
15년 전 | 809 | |
| 2607 | 15년 전 | 1358 | ||
| 2606 |
|
15년 전 | 941 | |
| 2605 | 15년 전 | 1759 | ||
| 2604 | 15년 전 | 718 | ||
| 2603 | 15년 전 | 878 | ||
| 2602 |
bitmaster
|
15년 전 | 892 | |
| 2601 | 15년 전 | 895 | ||
| 2600 | 15년 전 | 1626 | ||
| 2599 | 15년 전 | 2932 | ||
| 2598 | 15년 전 | 2013 | ||
| 2597 | 15년 전 | 1930 | ||
| 2596 | 15년 전 | 914 | ||
| 2595 | 15년 전 | 1021 | ||
| 2594 | 15년 전 | 963 | ||
| 2593 |
순천홈페이지
|
15년 전 | 850 | |
| 2592 | 15년 전 | 1140 | ||
| 2591 | 15년 전 | 839 | ||
| 2590 | 15년 전 | 1307 | ||
| 2589 |
dannykim
|
15년 전 | 735 | |
| 2588 |
dannykim
|
15년 전 | 646 | |
| 2587 | 15년 전 | 1531 | ||
| 2586 | 15년 전 | 790 | ||
| 2585 | 15년 전 | 1234 | ||
| 2584 | 15년 전 | 1095 | ||
| 2583 | 15년 전 | 776 | ||
| 2582 | 15년 전 | 800 | ||
| 2581 | 15년 전 | 708 | ||
| 2580 |
|
15년 전 | 688 | |
| 2579 | 15년 전 | 856 | ||
| 2578 | 15년 전 | 1103 | ||
| 2577 | 15년 전 | 2271 | ||
| 2576 |
확실한방법
|
15년 전 | 874 | |
| 2575 | 15년 전 | 956 | ||
| 2574 | 15년 전 | 989 | ||
| 2573 | 15년 전 | 982 | ||
| 2572 | 15년 전 | 1053 | ||
| 2571 |
|
15년 전 | 677 | |
| 2570 | 15년 전 | 1933 | ||
| 2569 |
|
15년 전 | 769 | |
| 2568 | 15년 전 | 1580 | ||
| 2567 | 15년 전 | 731 | ||
| 2566 |
dannykim
|
15년 전 | 743 | |
| 2565 | 15년 전 | 1414 | ||
| 2564 |
기획매니아
|
15년 전 | 1035 | |
| 2563 | 15년 전 | 1318 | ||
| 2562 | 15년 전 | 1620 | ||
| 2561 | 15년 전 | 1260 | ||
| 2560 | 15년 전 | 1345 | ||
| 2559 | 15년 전 | 718 | ||
| 2558 |
|
15년 전 | 2265 | |
| 2557 | 15년 전 | 1007 | ||
| 2556 | 15년 전 | 740 | ||
| 2555 | 15년 전 | 1082 | ||
| 2554 | 15년 전 | 793 | ||
| 2553 | 15년 전 | 2037 | ||
| 2552 | 15년 전 | 1077 | ||
| 2551 | 15년 전 | 902 | ||
| 2550 |
|
15년 전 | 992 | |
| 2549 | 15년 전 | 943 | ||
| 2548 |
|
15년 전 | 961 | |
| 2547 |
|
15년 전 | 1031 | |
| 2546 | 15년 전 | 539 | ||
| 2545 | 15년 전 | 463 | ||
| 2544 | 15년 전 | 433 | ||
| 2543 | 15년 전 | 1138 | ||
| 2542 |
|
15년 전 | 942 | |
| 2541 | 15년 전 | 790 | ||
| 2540 | 15년 전 | 788 | ||
| 2539 | 15년 전 | 1190 | ||
| 2538 | 15년 전 | 3195 | ||
| 2537 | 15년 전 | 1061 | ||
| 2536 |
|
15년 전 | 1862 | |
| 2535 | 15년 전 | 1125 | ||
| 2534 |
|
15년 전 | 946 | |
| 2533 | 15년 전 | 2589 | ||
| 2532 | 15년 전 | 1592 | ||
| 2531 |
|
15년 전 | 2498 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기