본문 바로가기
CLASS/JSP

#3-3 / 2예제 paging 기능 추가

by hingu 2024. 6. 26.

❓ ex)

data갯수가 29개이고 한페이지당 4개씩 출력할 경우

1page : 4

2page : 4

3page : 4

...

8page : 1

 

⚡ 전체회원만...

총 22개의 데이터 중 한페이지당 5개씩 노출하게 제작

1.( 총 data갯수 / 한페이지당 노출할 수 ) 만큼 반복문 돌려서 element생성

<tr>
    <% 
    float pageno = 10f; //한페이지당 10개씩 노출
    int alldata= Integer.parseInt(rs2.getString("ctn"));
    int total_pg = (int)Math.ceil(alldata/pageno);   
    int no=1;
    while(no<=total_pg){
    %>
        <td width="20" align="center"><a href="javascript:;"><%=no%></a></td>
    <%
    no++;}
    %>
</tr>

=> float으로 받아야함  : ceil로 올림이 적용되기 때문에.. (?)

limit 0,5 : 0부터 5개
limit 5,5 : 5부터 5개
limit 10,5 : 10부터 5개
..

sql의 limit숫자를 적용하는 방법 : (현재번호-1)*한페이지당 출력할 data갯수

 

-jsp8

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="./dbconfig.jsp" %>

<%	
	String sms = (String)request.getParameter("ad_sms");
	String email = (String)request.getParameter("ad_email");
	//String full = (String)request.getParameter("all_user");
	
	if(sms == null || sms == "Y" && email == null || email == "Y"){
		sms = "Y";
		email = "Y";
	}
	
	String table = "mall_member";
	String sql = "";
	String sql2 = "";

	String full = "Y"; //페이징 확인 위해 임시로 full값 강제로 넣어둠... 계속 전체보기로
	
	//paging
	int pgno = 0; //page번호 핸들링위한 전역변수

	if(request.getParameter("pno") == null || request.getParameter("pno")=="1"){ //최초 접속 시
		pgno = 0;
	}else{ //사용자가 페이지 번호를 클릭
		int pp = Integer.parseInt(request.getParameter("pno"));
		//sql의 limit숫자를 적용하는 방법 : (현재번호-1)*한페이지당 출력할 data갯수
		pgno = (pp-1)*5;	
	}
	out.print(pgno);
	
	if(full == null || full.equals("null")){ //전체회원이 아닌 각 파트별 수신여부 회원 리스트
		sql = "select * from "+ table +" where ad_sms=? and ad_email=? order by midx desc";
		sql2 = "select count(*) as ctn from "+table + " where ad_sms=? and ad_email=? order by midx desc";
	}else{ //전체회원 출력 파트
		sql = "select * from " + table + " order by midx desc limit "+ pgno +",5"; 
		sql2 = "select count(*) as ctn from " + table + " order by midx desc";      
	};
	
	PreparedStatement ps = dbcon.prepareStatement(sql);
	if(full==null || full.equals("null")){
		ps.setString(1,sms);
		ps.setString(2,email);
	}
	ResultSet rs = ps.executeQuery();

	ps = dbcon.prepareStatement(sql2);
	if(full==null || full.equals("null")){
		ps.setString(1,sms);
		ps.setString(2,email);
	}	

	ResultSet rs2 = ps.executeQuery();
	rs2.next(); //반복문 사용하지않을경우엔 이렇게 따로한번 써줘야함
	
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 리스트 출력 파트(select)</title>
</head>
<body>
	<!-- SPA형태 - 같은 페이지에서 돌림 -->
	<form id="frm" method="post" action="./jsp8.jsp">
		<input type="hidden" name="all_user" value=<%=full%>> <!-- hidden에 Y가 있을 경우 전체회원 리스트 출력 -->
		<p>
			SMS 광고수신 : 
			<input type="radio" name="ad_sms" value="Y" <%if(sms.equals("Y")) out.print("checked");%>>동의함 
			<input type="radio" name="ad_sms" value="N" <%if(sms.equals("N")) out.print("checked");%>>동의안함
		</p>
		<p>
			Email 광고수신: 
			<input type="radio" name="ad_email" value="Y" <%if(email.equals("Y")) out.print("checked");%>>동의함
			<input type="radio" name="ad_email" value="N" <%if(email.equals("N")) out.print("checked");%>>동의안함
		</p>
		<input type="button" value="검색" onclick="search()">
		<input type="button" value="전체회원" onclick="all_member()">
	</form>
	
	<form id="frm2" method="post" action="./jsp10.jsp">
		<input type="hidden" name="idx" value="">
	</form>
	
	<table border="1" cellpadding="0" cellspacing="0">
		<thead>
			<tr>
				<th>번호</th>
				<th>아이디</th>
				<th>고객명</th>
				<th>통신사</th>
				<th>전화번호</th>
				<th>이메일</th>
				<th>SMS 수신 여부</th>
				<th>이메일 수신 여부</th>
				<th>관리</th>
			</tr>
		</thead>
		<tbody>
			<% 
			//일련번호
			  //일련번호 또한 페이지에 맞게 출력 : (data전체갯수-한페이지당 출력할 data갯수)
			int w= Integer.parseInt(rs2.getString("ctn")) - pgno;
			while(rs.next()){
			%>
			<tr>
				<td><%= w %></td>
				<td><a href="javascript:void modify(<%= rs.getInt("midx")%>)"><%= rs.getString("mall_id")%></a></td>
				<td><%= rs.getString("mall_name")%></td>
				<td><%= rs.getString("tel_corp")%></td>
				<td><%= rs.getString("tel_no")%></td>
				<td><%= rs.getString("mall_email")%></td>
				<td><%= rs.getString("ad_sms")%></td>
				<td><%= rs.getString("ad_email")%></td>
				<td>
					<input type="button" value="상세보기" onclick="viewpage(<%= rs.getInt("midx")%>)">
					<input type="button" value="삭제">
				</td>
			</tr>
			<%
			w--; }
			%>
		</tbody>
	</table>
	
	<!-- paging  -->
	<table border="1" cellpadding="0" cellspacing="0" style="margin : 10px auto">
		<tr>
			<% 
			float pageno = 5f; //한페이지당 5개씩 노출
			int alldata= Integer.parseInt(rs2.getString("ctn"));
			int total_pg = (int)Math.ceil(alldata/pageno);   
			int no=1;
			while(no<=total_pg){
			%>
				<td width="20" align="center"><a href="./jsp8.jsp?pno=<%=no%>"><%=no%></a></td>
			<%
			no++;}
			%>
		</tr>	
	</table>
	<form>
		<input type="hidden" >
	</form>
	
</body>
<script src="./js/jsp8.js?v=3"></script>
</html>
<%
rs2.close();
rs.close();
ps.close();
dbcon.close();
%>

미쳣다............................

 


 

jsp10.jsp
0.00MB
jsp11.jsp
0.00MB
jsp12.jsp
0.00MB
jsp8.jsp
0.00MB
jsp9.jsp
0.00MB

 

한번 확인해보쇼

너무 어려부다

 

데이터는 이거  .. 복구해서 해보쇼..

erp.sql
0.01MB