본문 바로가기

HTML

240130 HTML 홈페이지 만들기

오늘은 관리자 페이지 게시글 관리에

게시글 검색 기능 만들기

 

일단 JSP 에 input 창과 제출할 버튼 만듦

<div class="search">
  <input type="text" id="search"/>
  <button id="searchBtn">검색</button>
</div>

 

제이쿼리에 클릭 시 실행할 함수 만들기

$("#searchBtn").click(function() {
  let search = $('#search').val();
  // alert(search);
  location.href="./board?search=" + search;
});

 

이제 GET 방식으로 받기 때문에

서블릿의 doget 쪽에 값을 받아 실행하는 메소드 작성, DAO 메소드 오버로딩

    if (request.getParameter("search") == null 
        || request.getParameter("search").isBlank()) {
      list = dao.boardList();
    } else {
      list = dao.boardList(request.getParameter("search"));
    }

 

DAO 에서는 쿼리문에 WHERE 조건문을 추가하여 검색

    String sql = "SELECT b.board_no, b.board_title, m.mname, b.board_date, b.board_del, "
        + "(select COUNT(*) from visitcount v where v.board_no = b.board_no) AS 'count', "
        + "(SELECT COUNT(*) FROM comment c WHERE c.board_no = b.board_no) AS comment "
        + "FROM board b JOIN c23c_26.member m ON b.mno = m.mno " 
        + "WHERE b.board_title LIKE concat('%', ?,'%') "
        + "OR m.mname LIKE concat('%', ?,'%') " // '%?%'
        + "ORDER BY board_no desc " + "LIMIT 0, 15";

 

홈페이지에 출력해보기

<tbody>
  <c:forEach items="${list }" var="row">
    <tr class="row${row.del }">
      <td class="bno">${row.no }</td>
      <td><a href="../detail?no=${row.no }">${row.title }</a></td>
      <td>${row.mname }</td>
      <td>${row.date }</td>
      <td>${row.ip }</td>
      <td>${row.count }</td>
      <td>${row.comment }</td>
      <td><input type="hidden" id="del" value="${row.del }" /> 
        <c:if test="${row.del eq 0 }"> <i class="xi-eye changeDel"></i></c:if>
        <c:if test="${row.del eq 1 }"> <i class="xi-eye-off-o changeDel"></i></c:if>
      </td>
    </tr>
  </c:forEach>
</tbody>

 

페이징 버튼도 추가, 기존 게시글 보는 것에서 1 ~ 10, 11 ~ 20 이렇게 되도록 수정해 봄

<div class="paging">
  <button class="pageBtn" onclick="paging(1)">‍🥔‍</button>
  <button class="pageBtn" <c:if test="${param.page - 10 lt 1 }">disabled="disabled"</c:if>
    onclick="paging(${param.page - 1})">🥕</button>
  <c:forEach begin="${startPage }" end="${startPage + 9 }" var="p">
    <button class="pageBtn" <c:if test="${page eq p }">id="currentBtn"</c:if>
      onclick="paging(${p})">${p }</button>
  </c:forEach>
    <button class="pageBtn"<c:if test="${param.page + 10 gt totalPage }">disabled="disabled"</c:if>
      onclick="paging(${param.page + 1})">🥕</button>
  <button class="pageBtn" onclick="paging(${totalPage})">🥔</button>
</div>

 

페이지 계산하는 것은 이번엔 서블릿에서 작성, 더 좋은 공식이 있을 순 있는데,,

일단 급한 내 머리로 만들어 봄

    int page;
    int totalCount = dao.totalCount();
    
    int totalPage;
    if (totalCount % 15 == 0) {
      totalPage = totalCount / 15;
    } else {
      totalPage = totalCount / 15 + 1;
    }
    
    if (request.getParameter("page") == null || request.getParameter("page").equals("")) {
      page = 1;
    } else {
      page = Util.str2Int2(request.getParameter("page")); 
    }
    
    page = page > totalPage ? totalPage : page; 
    
    int startPage;
    if (page <= 10) {
      startPage = 1;
    } else if (page % 10 == 0) {
      startPage = (page - 1) / 10 * 10 + 1;
    } else {
      startPage = (page / 10 * 10) + 1;
    }

 

여기서 검색 결과도 같이 넣어서 해야하는데 그건 좀만 있다가 작성할 예정

 

--> 댓글 관리랑 ip 관리도 같이 넣으라고 하였는데 팀 프로젝트 한다고 못만듬.. 내일

'HTML' 카테고리의 다른 글

240201 HTML 홈페이지 만들기  (2) 2024.02.01
240131 HTML 홈페이지 만들기  (0) 2024.01.31
240129 HTML 홈페이지 만들기  (0) 2024.01.29
240126 HTML 홈페이지 만들기  (1) 2024.01.26
240125 HTML 홈페이지 만들기  (0) 2024.01.25