jisooooooo
50
2018-01-07 16:38:12
4
917

jsp게시판 검색 결과 중 필요없는 페이지가 나옵니다.


 <% 

   String skey= request.getParameter("keyfield");

   String sval=request.getParameter("keyword");

 

   bbsDAO dao=new bbsDAO();

   int total=dao.dbCnt();

   int ttoal=dao.dbGCnt(skey, sval);

    

  %>

    <tr align="right" height="40">

      <td colspan="5" ><a href="in_form.jsp">입력</a>&nbsp;&nbsp;레코드갯수 : <%=ttoal %>/<%=dao.dbCnt()%>&nbsp;&nbsp;</td>

    </tr>

    

    <tr bgcolor="pink">

      <td>행번호</td> <td>저자</td> <td>제 목</td> <td>사번</td> <td>파일</td>

    </tr>

  <%

  

  int start=0, end=0;

  int pagecount=0, temp=0, startpage=11, endpage=20;

  String pnum="1";//

  

  

  pnum=request.getParameter("pageNum");

  if(pnum==null || pnum==""){pnum="1";}

  int pageNUM=Integer.parseInt(pnum);//[7문자]를 숫자 7변환



  if(total%5==0){pagecount=total/5;}

  else{pagecount=(total/5)+1;}

 

  temp=(pageNUM-1)%10;

  startpage=pageNUM-temp;

  endpage=startpage+9;

   if(endpage>=pagecount){endpage=pagecount;} 

   

    ArrayList<bbsBean> list=dao.dbSel(pageNUM, start, end, skey, sval);

    for(int i=0; i<list.size(); i++){

      bbsBean bean=list.get(i);

      

     

 

   %>

  <tr>

   <td> <%=bean.getB_rn() %> </td>

   <td><%=bean.getB_name()%></td>

   <td><a href="boardDetail.jsp?index=<%=bean.getB_sabun()%>"><%=bean.getB_title()%></a></td>

   <td><%=bean.getB_sabun()%></td>

   <td><%=bean.getB_file1()%></td>

  </tr>

  <% 

     }//for end

   

  %>

  <tr align="center">

   <td colspan="5" height="50">

   

   <%

     if(startpage > 5){

      out.println("<a href=boardList.jsp?pageNum=1>◀</a>");

  out.println("<a href=boardList.jsp?pageNum="+(startpage-5)+">[이전]</a>"); 

   }

    

   for(int i=startpage; i<=endpage; i++){ 

 if(i==pageNUM){    out.println("<font style='color:orange; font-size:15pt;'>["+i+"]</font>");   

 }else if( skey==null || skey=="" ||sval==null||sval==""){

       out.println("<a href=boardList.jsp?pageNum="+i+">["+i+"]</a>");

 }else{

 out.println("<a href=boardList.jsp?pageNum="+i+"&keyfield="+skey+"&keyword="+sval+">["+i+"]</a>");

 }

   } 


   if(endpage < pagecount){

  out.println("<a href=boardList.jsp?pageNum="+(startpage+5)+">[다음]</a>");

  out.println("<a href=boardList.jsp?pageNum="+pagecount+">▶</a>");

   }

       

   %>

   </td>

  </tr>

  <tr align="center">

   <td colspan="5">

   <form>

    <select name="keyfield">

      <option value="">전체출력</option>

      <option value="b_name" >이름</option>

      <option value="b_title">제목</option>

      <option value="b_content">내용</option>  

    </select>

     <input type="text" size="15" name="keyword">

     <input type="submit" value="검색">

   </form>

   이게 전체 List 코드 입니다. 

페이징이랑 검색 등을 구현 했습니다. 


public ArrayList<bbsBean> dbSel(int pageNUM, int start, int end, String skey, String sval) {

//레코드 목록, 검색목록

 ArrayList<bbsBean> list=new ArrayList<bbsBean>(); 

 

     start=(pageNUM-1)*5+1;

 end=pageNUM*5;

 String sqry;

 if(skey==null || skey=="" ||sval==null||sval==""){

      sqry=" where b_title like '%%' ";//서브쿼리

      skey=""; sval="";

    }else{ 

      sqry=" where "+skey+ " like '%"+sval+"%' ";

      

    }

    

 String x=" ",y="",m="",z="";

    try {

      x="select * from ( ";

      y="select rownum b_rn,b_sabun,b_name,b_email,b_title,b_content,b_juso1,b_juso2,b_phone,b_passwd,b_cnt,b_wdate,b_url,b_file1,b_size1 from ";

      m=" (select * from bbs "+sqry+" )";

      z=") where b_rn between "+start+" and " +end;

    

     

  ST=CN.createStatement();

  RS=ST.executeQuery(x+y+m+z);

  

  while(RS.next()==true) {

bbsBean bs=new bbsBean();

bs.setB_rn(RS.getInt("b_rn"));

bs.setB_sabun(RS.getInt("b_sabun"));

bs.setB_name(RS.getString("b_name"));

bs.setB_email(RS.getString("b_email"));

bs.setB_title(RS.getString("b_title"));

bs.setB_content(RS.getString("b_content"));

bs.setB_juso1(RS.getString("b_juso1"));

bs.setB_juso2(RS.getString("b_juso2"));

bs.setB_phone(RS.getString("b_phone"));

bs.setB_passwd(RS.getString("b_passwd"));

bs.setB_cnt(RS.getInt("b_cnt"));

bs.setB_wdate(RS.getDate("b_wdate"));

bs.setB_url(RS.getString("b_url"));

bs.setB_file1(RS.getString("b_file1"));

bs.setB_size1(RS.getInt("b_size1"));

list.add(bs);

  }//while end

}catch(Exception ex) {System.out.println(ex); }

return list;

  }//dbSel


이건 DAO 에 쓴 코드 입니다. 

검색을 할 때에 이런 식으로 검색 결과가 3개인데 2페이지까지 출력됩니다.

어떻게 없애면 좋을까요..? 제가 설명을 잘 한건지 모르겠네요...

도와주시면 감사하겠습니다..









0
0
  • 답변 4

  • 면목동주민
    194
    2018-01-07 19:32:18 작성 2018-01-07 19:36:49 수정됨

    보기가 너무 불편해서 어떻게 디버깅이 안되네요..

    한 페이지에 보여지는 게시글 row가 3행인가요?

    총6개의 글중 검색조건에 맞는게 3개인데 2페이지가 보인다는건 

    페이징 로직이 잘못된것 같네요

    0
  • dogcowking
    98
    2018-01-07 22:36:11

    page =0 부터 보여줘야 하는데 1부터 보여줘서?

    0
  • 냐냐냐냥냥냥
    543
    2018-01-07 23:01:13 작성 2018-01-07 23:01:30 수정됨

    total은 조건검색이 안들어간 전체 레코드수 이고 , 

    아래 ttotal은 검색 키워드가 들어가서 조건 검색에 총 토탈 레코드수입니다. 

     

    int total=dao.dbCnt();

     int ttoal=dao.dbGCnt(skey, sval);


    조건 검색을 했을 때 ttoal 값은 3이 나와서 이걸로 페이징 갯수를 계산해야되는데 , 

    전체 레코드 수 인 total로 계산해버리니까 페이지 갯수가 2로 나와서 저리 되는거죠; 

    1
  • jisooooooo
    50
    2018-01-08 11:09:43

    냐냐냐냥냥냥 님 감사합니다!! 

      if(ttotal%5==0){pagecount=ttotal/5;}

      else{pagecount=(ttotal/5)+1;}

    요렇게 고쳤더니 잘 돼요~!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.