일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Python
- hackerrank
- jsp
- 항해99
- java
- Real MySQL
- Til
- 스터디
- 2020년 일정
- If
- 2020년 제4회 정보처리기사 필기 문제 분석
- LeetCode
- Jackson
- 알고리즘
- sqldeveloper
- git
- 서평
- 필기
- 미니프로젝트
- 회고
- 주간회고
- algorithms
- 성적프로그램
- 정보처리기사
- post
- 2020년 정보처리기사 4회
- 함수형 코딩
- 책리뷰
- 뇌정리
- 코드숨
- Today
- Total
조컴퓨터
201030 JSP 10 - JSP 미니 프로젝트 (답변, 검색, 페이징) 본문
답변형 게시판 알고리즘
새글쓰기 : 최초의 부모글
답변쓰기 : 자식글
그룹번호(grpno) : 부모글 번호와 동일하게 대입
들여쓰기(indent) : 부모글 들여쓰기+1
글순서(ansnum) : 부모글 글순서+1, 이후 글 순서 재조정
번호 | 제목 | 그룹번호 | 들여쓰기 | 글순서 |
1 | 서울시 | 1 | 0 | 0 |
▶종로구 | 1 | 1 | 1 | |
▶▶인사동 | 1 | 1→2 | 1→2 | |
▶▶▶솔데스크 | 1 | 2→3 | 2→3 | |
▶▶▶탑골공원 | 1 | 2→3 | 3→4 | |
▶강남구 | 1 | 1 | 4→5 | |
▶▶역삼동 | 1 | 1→2 | 5→6 | |
2 | 제주시 | 2 | 0 | 0 |
3 | 부산시 | 3 | 0 | 0 |
① 글순서 재조정
update tb_bbs
set ansnum=ansnum+1
where grpno=1 and ansnum>=3;
② 글목록 (인기순, 조회순 등)
select * from tb_bbs order by ?;
전체적인 시스템은 이렇다. 위의 SQL문을 바탕으로 원하는 함수를 만들면 된다.
게시판 검색
예시1) 작성자에서 '솔데스크'가 있는지 검색
select * from tb_bbs
where wname like '%솔데스크%';
예시2) 제목에서 '트럼프'가 있는지 검색
select * from tb_bbs
where subject like '%트럼프%';
예시3) 내용에서 '손흥민'이 있는지 검색
select * from tb_bbs
where content like '%손흥민%';
예시4) 제목 또는 내용에서 '환불'이 있는지 검색
select * from tb_bbs
where subject like '%환불%' or content like '%환불%';
예시5) 갯수 세기
select count(col, word) from tb_bbs;
페이징
- rownum(줄번호) 활용
1)
select wname, grpno, ansnum
from tb_bbs
order by grpno desc, ansnum asc;
2) rownum 추가 : 줄번호까지 정렬됨
select rownum, wname, grpno, ansnum
from tb_bbs
order by grpno desc, ansnum asc;
3) 1)의 SQL문을 셀프조인하고 rownum 추가
select rownum, wname, grpno, ansnum
from(
select wname, grpno, ansnum
from tb_bbs
order by grpno desc, ansnum asc
);
4) 줄번호 1~5 조회 (1페이지에 해당)
select rownum, wname, grpno, ansnum
from(
select wname, grpno, ansnum
from tb_bbs
order by grpno desc, ansnum asc
)
where rownum>=1 and rownum<=5;
5) 줄번호 6~10 조회 (2페이지에 해당)
select rownum, wname, grpno, ansnum
from(
select wname, grpno, ansnum
from tb_bbs
order by grpno desc, ansnum asc
)
where rownum>=6 and rownum<=10;
※ 5)는 조회가 되지 않는다. 일전에 작성했던 링크 참조 ( ** 추후 링크 첨부 수정 ** )
6) 줄번호가 있는 3)의 테이블을 한번 더 셀프 조인하고 rownum 칼럼명을 rnum으로 바꾼다.
select rnum, wname, grpno, ansnum
from(
select rownum as rnum, wname, grpno, ansnum
from(
select wname, grpno, ansnum
from tb_bbs
order by grpno desc, ansnum asc
)
)
where rnum>=6 and rnum<=10;
7) 페이징 + 검색
select rnum, wname, grpno, ansnum
from(
select rownum as rnum, wname, grpno, ansnum
from(
select wname, grpno, ansnum
from tb_bbs
where subject like '%솔데스크%'
order by grpno desc, ansnum asc
)
)
where rnum>=6 and rnum<=10;
일전에 배웠던 rnum과 동일하다. 같은 논리로 돌아간다.
응용) 검색한 목록 페이지에서 답변 쓰기를 하고
목록 페이지로 다시 복귀할 때
검색한 목록 페이지 그대로 유지하기
bbsList.jsp → bbsRead.jsp → bbsReply.jsp → bbsReplyProc.jsp → bbsList.jsp
한 바퀴 돌 때, col, word를 계속 가지고 있으면 된다.
어떻게 할 것이냐?
① ?col=<%=col%>&word=<%=word%>
② <input type="hidden" name="" value="">
③ location.href='bbsList.jsp?col=" + col + "&word=" + word +"'
위의 세 가지 형식을 이용하여 진행하면 된다.
'자바 웹개발자 과정 > JSP' 카테고리의 다른 글
201103 JSP 12 - JSP 미니 프로젝트 (세션_로그인) (0) | 2020.11.03 |
---|---|
201102 JSP 11 - JSP 미니 프로젝트 (공지사항) (0) | 2020.11.03 |
201029 JSP 09 - JSP 미니 프로젝트 (수정) (0) | 2020.10.29 |
201028 JSP 08 - JSP 미니 프로젝트 (상세보기) (0) | 2020.10.29 |
201027 JSP 07 - JSP 미니 프로젝트 (게시판 구축) (0) | 2020.10.28 |