asp 목록보기

· 16년 전 · 1629
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 기타에서 이동 됨]
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
16년 전 조회 1,574
16년 전 조회 5,368
16년 전 조회 2,481
16년 전 조회 5,975
16년 전 조회 1,952
16년 전 조회 4,025
16년 전 조회 3,041
16년 전 조회 2,227
16년 전 조회 2,247
16년 전 조회 4,409
16년 전 조회 3,308
16년 전 조회 2,843
16년 전 조회 2,982
16년 전 조회 2,099
16년 전 조회 1,779
16년 전 조회 1,693
16년 전 조회 1,413
16년 전 조회 1,684
16년 전 조회 1,915
16년 전 조회 1,611
16년 전 조회 4,851
16년 전 조회 3,839
16년 전 조회 1,804
16년 전 조회 1,548
16년 전 조회 2,291
16년 전 조회 4,525
16년 전 조회 3,559
16년 전 조회 2,592
16년 전 조회 4,349
16년 전 조회 3,215
16년 전 조회 1,366
16년 전 조회 1,386
16년 전 조회 2,045
16년 전 조회 1,893
16년 전 조회 2,575
16년 전 조회 2,241
16년 전 조회 1,381
16년 전 조회 4,394
16년 전 조회 1,490
16년 전 조회 1,794
16년 전 조회 2,219
16년 전 조회 3,852
16년 전 조회 2,746
16년 전 조회 1,505
16년 전 조회 4,025
16년 전 조회 1,405
16년 전 조회 1,590
16년 전 조회 1,256
16년 전 조회 1,729
16년 전 조회 1,630
16년 전 조회 1,642
16년 전 조회 1,434
16년 전 조회 2,188
16년 전 조회 1,828
16년 전 조회 1,983
16년 전 조회 2,192
16년 전 조회 1,480
16년 전 조회 2,316
16년 전 조회 2,266
16년 전 조회 4,542
16년 전 조회 1,308
16년 전 조회 1,059
16년 전 조회 2,018
16년 전 조회 1,990
16년 전 조회 1,523
16년 전 조회 2,050
16년 전 조회 2,286
16년 전 조회 1,400
16년 전 조회 1,744
16년 전 조회 1,931
16년 전 조회 1,023
16년 전 조회 1,706
16년 전 조회 1,417
16년 전 조회 1,916
16년 전 조회 1,334
16년 전 조회 2,217
16년 전 조회 1,904
16년 전 조회 5,881
16년 전 조회 1,929
16년 전 조회 3,694
16년 전 조회 1,477
16년 전 조회 1,767
16년 전 조회 2,080
16년 전 조회 2,622
16년 전 조회 2,317
16년 전 조회 2,762
16년 전 조회 3,005
16년 전 조회 3,022
16년 전 조회 1,829
16년 전 조회 1,553
16년 전 조회 1,424
16년 전 조회 1,738
16년 전 조회 1,217
16년 전 조회 1,975
16년 전 조회 1,749
16년 전 조회 1,621
17년 전 조회 1,309
17년 전 조회 2,181
17년 전 조회 3,240
17년 전 조회 2,174