asp 목록보기 > 퍼블리셔팁

퍼블리셔팁

퍼블리싱과 관련된 유용한 정보를 공유하세요.
질문은 상단의 QA에서 해주시기 바랍니다.

asp 목록보기 정보

HTML asp 목록보기

본문

arrow_dot.gif 글 목 록보기
line_450.gif
 
  이제 글도 저장하고 했으니.. 목록을 만들어 보도록 하죠..
  일단.. 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
  '이것두 위에서 설명했으니 아시겠죠?
  %>
 
line_450.gif
  arrow_dot.gif 여기 서.. 잠깐... Tip!!
line_450.gif
 
  소스에 나와있긴하지만.. 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일이 지났다면 최근의 글이 아니라 는것을 나타냅니다.
 
line_450.gif
 
  <%
  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 기타에서 이동 됨]
추천
0
  • 복사

댓글 0개

© SIRSOFT
현재 페이지 제일 처음으로