프로젝트/첫번째 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">
<%
}else{
my_page = first_page;
%>
<a href="list.jsp?code=<%=code%>&page_now=<%=my_page%>"><img src="/admin/bbs/img/btn_right.gif"></a>
<%
}
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>
<%
}else{
%>
<b><a href="list.jsp?code=member2&page_now=<%=direct_page%>"><%=direct_page%></a></b>
<%
}
}
// 다음 블럭 처리
if(block < total_block) {
my_page = last_page + 1;
%>
<a href="list.jsp?code=member2&page_now=<%=my_page%>"><img src="/admin/bbs/img/btn_right.gif"></a>
<%
}else{
%>
<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부터 시작)
두번째 물음표 : 한번에 출력되는 수