프로젝트/첫번째 jsp eclipes html 을 활용한..

admin -member-list.jsp !!!!!!! numbering + 페이징 처리

IT새내기IM 2023. 1. 31. 16:16

총 회원수 계산

//총회원수계산
String sql_count = "select count(*) as count from "+code+"";

Connection con_count = DriverManager.getConnection(url, user, password);
Statement stmt_count = con_count.createStatement();
ResultSet rs_count = stmt_count.executeQuery(sql_count);

int total_record = 0;

while(rs_count.next()){
	total_record = rs_count.getInt("count");
}

페이징에 필요한 변수 정리

// page_now에서 받아오는 getParameter는 
//아래에서 쓰인 <a href="list.jsp?code=notice&page_now=<%=direct_page%>"> a태그를 통해 넘겨준 변수를 get으로 받은것
// 즉 form태그의 get방식과 동일

//변수 정리 

int page_now = 1; //현재 페이징 수 처리
if(request.getParameter("page_now") != null){
	page_now = Integer.parseInt(request.getParameter("page_now")); //현재 페이징 수
}else{
	page_now = 1;
}

// page_now에서 받아오는 getParameter는 
//아래에서 쓰인 <a href="list.jsp?code=notice&page_now=<%=direct_page%>"> a태그를 통해 넘겨준 변수를 get으로 받은것
// 즉 form태그의 get방식과 동일

int num_per_page = 5; //한 페이지당 출력할 게시물 수
int page_per_block = 5; //한 블럭당 출력할 링크 수
int total_page = 0; //총 페이지 수
int first = 0; //limit 시작 값

total_page = (int)Math.ceil(total_record / (double)num_per_page); //총 페이지 수      math.ceil은 소숫점버리고 정수+1 처리

first = num_per_page * (page_now - 1); //limit

numbering처리

<%
	int numbering = total_record - (page_now - 1) * num_per_page;

	while(rs.next()){

	memberid = rs.getString("memberid");
	pass = rs.getString("password");
	name = rs.getString("name");

%>
	<tr>
		<td width="50"><%=numbering %></td>
		<td width="125"><%=memberid%></td>
		<td width="125"><%=pass%></td>
		<td width="100"><%=name%></td>
	</tr>

<%
	numbering--;
	}
	rs.close();
	stmt.close();
	con.close();
	if(total_record == 0){
		out.print("<tr><td colspan=5 algin=center height=100>회원이 없습니다..</td></tr>");
	}
%>

페이징 블럭 관련 변수처리

int total_block = 0;  //블럭1~31이면 1~10 한블럭 처리 (총블럭) 
int block = 0; //현재 블럭
int first_page = 0; //현재블럭의 첫페이지
int last_page = 0; //현재블럭의 마지막페이지
int direct_page = 0; //현재페이지
int my_page = 0;

total_block = (int)Math.ceil(total_page / (double)page_per_block); //총 블럭 수
block = (int)Math.ceil(page_now / (double)page_per_block); //현재블럭
first_page = (block - 1) * page_per_block;
last_page = block * page_per_block;

블럭처리

if(total_block <= block) {
	last_page = total_page;
}
//out.print(last_page);
			// 이전 블럭 처리
			if(block == 1){
%>
				<img src="/admin/bbs/img/btn_left.gif">&nbsp;&nbsp;
<%				
			}else{
				my_page = first_page;
%>
				<a href="list.jsp?code=<%=code%>&page_now=<%=my_page%>"><img src="/admin/bbs/img/btn_right.gif"></a>&nbsp;&nbsp;
<%
			}
			for(direct_page = first_page + 1; direct_page <= last_page; direct_page++){
				if(page_now == direct_page){
%>
					<font color=red><b><%=direct_page%></b></font>&nbsp;
					
<%
				}else{
%>
					<b><a href="list.jsp?code=member2&page_now=<%=direct_page%>"><%=direct_page%></a></b>&nbsp;
					
<%
				}
			}
			// 다음 블럭 처리
			if(block < total_block) {
				my_page = last_page + 1;
%>
				&nbsp;<a href="list.jsp?code=member2&page_now=<%=my_page%>"><img src="/admin/bbs/img/btn_right.gif"></a>
<%
			}else{
%>
				&nbsp;<img src="../bbs/img/btn_right.gif">   
				
<%
			}
%>

마무리로 목록정리

String sql = "select * from "+code+" order by memberid desc limit "+first+","+num_per_page+"";

 

limit 

-DB data를 원하는만큼 잘라내기
첫번째 물음표 : 시작행 (0부터 시작)
두번째 물음표 : 한번에 출력되는 수