-
Thu/Jan/30[Java] day21. SQL-HTML 연습 (게시판 답글 만들기)Study/2020 국비교육_Java 2020. 1. 30. 09:12
Thu/Jan/30
[Java] day21.
SQL-HTML 연습 (게시판 답글 만들기)
실습_게시판 답글 달기* 새로운 글쓰기 query
Select Max(uid)+1 From board;
insert into board (name, title, message, email, mkdate, hit, pass, depth, uid) values (name, title, message, email, now(), hit, pass, depth, uid);
※ eclipse에서 바로 mySQL 사용하기
Driver Definition 초기 화면 - Add JAR/Zip 눌러서 드라이버 파일 추가
초기 파일은 지우고 선택한 Driver file만 남겨야 'OK' 활성화됨
Database / URL / User name / Password 본인거로 setting하고 Test Connection
Connection Success >> Finish
간단한 Query Test는 eclipse에서 편하게 실행할 수 있다
선택한 영역만 실행
SQL 명령어 실행 성공 (CREATE TABLE...)
mySQL에서 확인
eclipse의 Data Source Explorer를 통해 해당 database의 전체 구조를 편하게 확인 가능
직접 data 입력 가능 / insert query 없이!
※ 게시판에서 depth field 와 uid field 가 필요한 이유
create table board ( idx int(11) not null auto_increment primary key, name varchar(10) not null, depth int not null default 0, uid int not null);
depth == 답글 여부 field / uid == 답글 정렬 field
idx 가 auto_increment 설정되었기 때문에, 단순히 ORDER BY idx DESC; 로 정렬하면 답글이 맨 위로 올라오게 됨
uid는 max(uid)+1로 idx와 함께 1씩 증가하다가, 답글이 달리게 되면 그 답글은 본글의 uid를 갖고오고, 기존 글들의 uid는 1씩 증가시켜서 정렬함
→ UPDATE Query 필요, SELECT * FROM board_table ORDER BY uid DESC; 로 정렬
→ 필요한 Queries : 새글은 SELECT - INSERT, 답글은 INSERT - UPDATE
일반적으로 답글에는 글번호 보다는 별도의 구분 기호가 들어감 → depth field 에서 새글은 0, 답글은 1++ 을 지정해 구분
[ my solution ]
https://github.com/ezerwi/lecture0130_board_reply
ezerwi/lecture0130_board_reply
Contribute to ezerwi/lecture0130_board_reply development by creating an account on GitHub.
github.com
[수정ver2] 글목록 페이지 번호 추가
아으 하나 뭐 더할 때마다 에러가 미친듯이 나네..ㅋ
페이지 넘버링 하는데 피곤해서 그런지 어이없는 실수도 많고 계산도 잘 안돼서 몇시간 걸린듯ㅋㅋㅋㅋㅋㅋ
count(*)로 글 갯수 세는 것이 맞긴하지만, 중간에 삭제한 글이 몇개 있다보니
count(*)를 기준으로 20개씩 불러오게되면 최신 작성한 글 몇개가 나오지 않는 경우가 발생해서
MAX(uid)로 변경해서 처리했다 (이거 찾는데 1시간..)
20개씩 ResultSet return하는 method 만드는데
당연히 집어넣었어야 할 DBconnect() 안집어넣어서 rs null point error 계속 나와서 또 1시간 헤메고..
워낙 그동안 반사적으로 method를 만들었더니 넣었는지 안넣었었는지도 까먹은듯;;
[문제점 발견, 수정 진행 버전]
저녁 먹고 다시 해보면서 답글에 연속 답글을 달아보니
답글이 여기 달렸다 저기 달렸다하는 기현상 발생..;;ㅋㅋ
끝날 때까지 끝난게 아니다..
uid 생성하는 method 와 depth 계산 수정,
uid 순으로 답글 정렬 부분 수정 완료!!!!
어우..하다보니 너무 정신없어서 제목에 아예 value 줘서 자동으로 몇번 글의 답글인지 달리게 만듦
이제 글 삭제 시 uid 수정하는 부분, 글 수정 기능, 조회수 기능 추가하면 게시판 기본 기능은 모두 완성임
근데 요즘 게시판에서 원글 삭제한다고 답글까지 모두 삭제되는 경우는 거의 없기도 하고,
행여 필요하다고 해도 uid 설정 method 조금만 수정하면 될 거 같아서,
삭제 버튼 누르면 '삭제된 게시글입니다' 라는 표시만 나오도록 작업할 예정!
[수업시간에 끝까지 진행한 버전]
글 수정, 글 목록 page, 조회수 등 일부 기능 생략..
기본적인 작성/삭제 기능에 답글 달고 정렬하는 것 정도만 구현
depth는 그냥 웹에서 바로 ++1해서 Java로 넘기는 걸로 쉽게 해결 했고,
uid가 역시나 머리 아프게 오래 걸림, 구현은 그냥 하면 되는거 같은데 논리 짜는게 역시나 어렵다..
활용한 글 :
[강석기의 과학카페]코로나바이러스, 진화의 끝은 어디인가 https://m.news.naver.com/read.nhn?aid=0000007404&oid=584&sid1=105
[강석기의 과학카페]코로나바이러스, 진화의 끝은 어디인가
박쥐 사스-유사 코로나바이러스의 만연과 엄청난 유전적 다양성이라는 조건에서 이들이 서로 가까이 존재하면서 수시로 게놈을 재조합하는 걸 고려할 때, 미래에 (사람에 감염할) 새로운 변종이 등장할 것이라고 예상한다. -
news.naver.com
sql board table
mysql> desc board; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | idx | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(50) | NO | | NULL | | | title | varchar(100) | YES | | NULL | | | contents | text | NO | | NULL | | | mkdate | datetime | NO | | NULL | | | hit | int(11) | NO | | 0 | | | depth | int(11) | NO | | 0 | | | uid | int(11) | NO | | 0 | | +----------+--------------+------+-----+---------+----------------+ 8 rows in set (0.01 sec)
'Study > 2020 국비교육_Java' 카테고리의 다른 글
Mon/Feb/03 [Java] day23. 페이지 간 데이터 이동 (0) 2020.02.03 Fri/Jan/31 [Java] day22. Servlet basic (0) 2020.01.31 Wed/Jan/29 [Java] day20. Java 교재 내용 정리, HTML < FORM > (0) 2020.01.29 Tue/Jan/28[Java] day19. Interface, Abstract Class, Thread(+Runnable) (0) 2020.01.28 Thu/Jan/23 [Java] day18. 게시판 한번 더 실습 + 날짜/ip주소 추가 (0) 2020.01.23