1. 다중게시판
1. ORACLE에 3개의 테이블을 만든다.
CREATE TABLE ss001 (
custno NUMBER(6) NOT NULL PRIMARY KEY ,
custname VARCHAR2(20),
kor NUMBER(3),
eng NUMBER(3)
);
CREATE TABLE ss002 (
custno NUMBER(6) NOT NULL PRIMARY KEY ,
custname VARCHAR2(20),
kor NUMBER(3),
eng NUMBER(3)
);
CREATE TABLE ss003 (
custno NUMBER(6) NOT NULL PRIMARY KEY ,
custname VARCHAR2(20),
kor NUMBER(3),
eng NUMBER(3)
);
2. SEQUENCE 1개 만들기
CREATE SEQUENCE s_0001
MINVALUE 1
MAXVALUE 99999
INCREMENT BY 1
START WITH 1
CACHE 20 NOORDER NOCYCLE ;
3. slist.jsp 와 index페이지 연결하기
- 링크주소에 tab=테이블명 으로 매개변수를 던진다.

- 링크주소에서 던진 매개변수를 slist.jsp에서 받고,
session에 넣는다.
- session에 넣은 값을 session으로 받아서 저장한다.

- select 쿼리에 session에서 받아둔 테이블명을 넣는다.
이때 띄어쓰기에 유의한다.




- 테이블에 값을 넣어 잘 연결됐는지 테스트해본다.
INSERT INTO ss001
VALUES (s_0001.NEXTVAL, '김하나', 90, 88);
INSERT INTO ss002
VALUES (s_0001.NEXTVAL, '나우리', 70, 99);
INSERT INTO ss003
VALUES (s_0001.NEXTVAL, '나종문', 80, 66);
INSERT INTO ss003
VALUES (s_0001.NEXTVAL, '박영심', 90, 76);
INSERT INTO ss003
VALUES (s_0001.NEXTVAL, '최철수', 58, 95);

4. 글쓰기
- 게시판 옆쪽에 '글쓰기' 링크를 걸어준다.

- 글쓰기 폼 form.jsp를 만든다.

- 시퀀스는 NEXTVAL을 이용해 자동생성한다.
테이블은 session으로 받은 값을 이용해서 from 테이블명을 지정한다.

- 테이블에 insert가 완료되면, response.sendRedirect를 이용해 slist.jsp로 다시 돌아가도록 설정한다. 단, 변수 table의 값이 초기화 되어 링크되기 때문에,
아래와 같이 if문을 걸어 아래처럼 매개변수 tab != null일 경우에 대해 처리를 먼저한다.
- null이면 String table에는 session tab 값을 넣어 저장한다.
- null이 아니면 매개변수 tab의 값을 table변수에 넣고 세션 tab에 다시 저장한다.


- 저장된 값을 확인한다.

5. 삭제하기

- slist.jsp 의 custno를 매개변수로 delete.jsp와 연결한다.

- slist.jsp에서 받아온 custno값을 String으로 저장하고 where문에 적용한다.
table은 session값에서 받아와 저장한다.
- SQL의 delete쿼리를 작성하고 실행한다.
response.sendRedirect를 이용해 처리 후 slist.jsp로 돌아가도록 설정한다.

- 7번 이진지를 지워본다.

- 삭제완료
6. 투표하기

- 투표하기 폼만들기
radio를 이용해서 값을 선택할 수 있도록 처리한다.
<input type="radio" name="sel" value="naver">
- 'type'은 radio, 'name'은 값의 이름, 'value'는 값이다.

- 투표 페이지에서 받아온 값을 미리 만들어둔 데이터베이스 테이블에서 쿼리실행으로 값을 넘겨준다.

- update 쿼리를 사용할 때는 ?를 사용하면 작은따옴표('')가 자동으로 들어가서 실행되기때문에 변수로 저장해 그 자체를 쿼리에 직접 대입했다.
- 반드시 ORACLE에서는 COMMIT을 하고 사용하자!
update sel set naver = naver +1;

- 득표율을 표기하기 위해서 아래와 같은 식을 이용했다.
double krate = Math.round((double)k/sum *100);
- 최종적으로 투표결과 페이지를 만들고 표시한다. 이때도 response.sendRedirect를 넣어서 바로가기를 해줬다.
<%=krate%>% <hr width=<%=krate %> color="yellow" size=10 align="left">
- 이런식으로 hr tag에 width와 color, size, align을 지정해 그래프로 이용했다.
7. 로그인페이지 적용하기


- 이전게시물에서 연습했던 로그인페이지를 이용해
로그인시 투표가 가능하도록 홈페이지를 조정했다.