본문 바로가기

개발중/Web

Web05 page number

728x90
반응형

 

페이지 개수 출력하기

<%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8" %>
<%@ page import="java.text.SimpleDateFormat"%>      
<%@ page import="java.util.Date" %> 
<%@ include file="ssi.jsp" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title> [guestList.jsp]  </title>
  <style type="text/css">
    #pline{ margin-top: 35px; }
	*{ font-size: 30pt; }
	a{ font-size: 32pt; color:blue; text-decoration:none; }
	a:hover{ font-size:36pt; color:green;  text-decoration:none;  }
  </style>
	
  <script type="text/javascript">
  </script>
</head>
<body>
 

 <%
 ///////////////////////////////////////////////////
 msg="select count(*) as cnt from guest " ;
 ST=CN.createStatement();
 RS=ST.executeQuery(msg);
 RS.next(); //if, while 없이 이동
 Gtotal = RS.getInt("cnt"); //Gtotal = 316기억 
 
  //2020-07-28-목요일  페이징,검색,댓글 
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  Date dt = new Date( );
  //제목옆에 60분=1시간전에 올라온 글에 대해서 new깃발이나 red색표시
  		
  String pnum; //<a href="guestList.jsp?pageNum=13"> [13] </a>
  int pageNUM, pagecount;
  int start, end;
  int startpage, endpage ;
  int tmp; 
 
  String sqry=" ";
  String skey="검색필드", sval="검색키워드" ;
  String returnpage="";
 
  pnum = request.getParameter("pageNum");  //[13]클릭하면 문자로 13로 기억
  if( pnum==null || pnum==""){ pnum="1"; }
  pageNUM = Integer.parseInt(pnum);        //[13]클릭하면 숫자로 13로 기억
  System.out.println("클릭한 페이지 = " + pageNUM);
  
  start = (pageNUM-1)*10+1 ; //[13]클릭  시작행 121
  end = (pageNUM*10) ; //[13]클릭  끝행 130
  
  //[이전] [11]  ~[13]클릭~~ [20][다음]
  tmp = (pageNUM-1)%10 ; //13-1%10 결과은 2  
  startpage = pageNUM-tmp ; //11
  endpage = startpage+9 ; //20
  
  ///////////////////////////////////////////////////////////////
  String a="select * from ( ";
  String b=" select rownum rn,sabun,name,title,wdate,pay,hit,email from guest  ";
  String c=") where rn  between  " + start + "  and  " + end ;
  System.out.println(c);
  msg = a+b+c ;
  ST=CN.createStatement();
  RS=ST.executeQuery(msg); 
 %>
 
 <p id="pline">
 <table width="1200" border="1" cellspacing="0">
   <tr align="right">
   	 <td colspan="7">총레코드갯수: <%=Gtotal %> &nbsp;&nbsp; </td>
   </tr>
   
   <tr bgcolor="yellow">
    <td>행번호</td> <td>사번</td> <td>이름</td> 
    <td>제목</td>   <td>날짜</td> <td>조회수</td> <td>삭제</td>
   </tr>

<%
  while(RS.next()==true) {
    Gsabun = RS.getInt("sabun");
    Gtitle = RS.getString("title");
%>   
   <tr  onmouseover="style.backgroundColor='rgb(0,200,200)'" 
        onmouseout="style.backgroundColor=''">
     <td> <%= RS.getInt("rn") %> </td> 
     <td> <%= Gsabun %> </td> 
     <td> <%= RS.getString("name") %> </td> 
     <td> <a href="guestDetail.jsp?idx=<%=Gsabun%>"> <%= Gtitle %> </a> </td> 
     <td> <%= RS.getDate("wdate") %> </td> 
     <td> <%= RS.getInt("hit") %> </td>
     <td align="center">
      <input type="button" onclick="location.href='guestDelete.jsp?idx=<%=Gsabun%>' " value="삭제">
     </td>    
   </tr>
<% } %>  

 <tr>
   <td colspan="7" align="center">
    <%
   	 for(int i=1;i<11; i++){
   	  out.println("<a href=guestList.jsp?pageNum="+i+">["+i+"]</a>");	
   	 }
    %> 
   </td>
 </tr>
 
 </table>		
 <br>
 <a href="guestWrite.jsp">[등록]</a>
 <a href="index.jsp">[index]</a>
 <a href="login.jsp">[로그인]</a>
 <a href="guestList.jsp">[전체출력]</a>
 
 <p><br>
</body>
</html>

 

 

 

페이지 수를 나열하는 방법

 

페이지를 i를 이용해서 출력을 해준다.

 

 

사용자가 누른 쪽 수가 pageNum 에 담겨서

guestList.jsp 로 전달이 된다 (나 자신에게 전달 가능)

 

 

 

request.getParameter( "pageNum" ); 으로 사용자가 누른 i값을 받아 온다.

 

 

문자열을 정수형으로 바꿔준다.

 

 

start에는 (pageNum-1)*10+1

 

( 1  - 1 ) * 10 + 1 = 1

( 2  - 1 ) * 10 + 1 = 11

( 14 - 1 ) * 10 + 1 = 131

( 25 - 1 ) * 10 + 1 = 241

( 75 - 1 ) * 10 + 1 = 741

( 81 - 1 ) * 10 + 1 = 801

 

이런 결과 값이 나온다 즉,

행의 시작 숫자를 정해준다

 

end = ( pageNum * 10 );

이건 공식 그대로 행의 끝 숫자를 나타낸다

 

 

 

 

여기서 tmp는 단지 페이지 수를 구하기 위한 수단으로 사용된다.

( 17-1 ) % 10 = 6

( 20-1 ) % 10 = 9

( 35-1 ) % 10 = 4

( 42-1 ) % 10 = 1

( 86-1 ) % 10 = 5

 

 

startpage 는 곧 pageNum - (( pageNum -1 ) % 10)

 

pageNum - ( )

17 - (( 17-1 ) % 10) => 17 -  6  =  11

20 - (( 20-1 ) % 10) => 20 -  9  =  11

35 - (( 35-1 ) % 10) => 35 -  4  =  31

42 - (( 42-1 ) % 10) => 42 -  1  =  41

86 - (( 86-1 ) % 10) => 86 -  5  =  81

 

 

eng page = startpage+9

11 + 9 = 20

21 + 9 = 30

31 + 9 = 40

41 + 9 = 50

51 + 9 = 60

61 + 9 = 70

 

 

 

 

 

 

이제 쿼리문을 작성해서 데이터를 가져오자.

데이터는 기니까 3번에 나눠쓰고 합칠 것,

 

 

WERER RN BETWEEN START AND END;

 

728x90
반응형

'개발중 > Web' 카테고리의 다른 글

Web05 page button color  (0) 2020.07.29
Web06 page number  (0) 2020.07.29
Web02 회원정보 수정하기  (0) 2020.07.28
Web02 회원정보 삭제하기  (0) 2020.07.28
Web02 회원정보 불러오기(클릭)  (0) 2020.07.28