본문 바로가기
PHP/게시판 만들기

답변 쓰기 기능 작성 (중간 소스정리)

by ethanjoh 2008. 11. 20.

답변하기 작성 와우, 지금까지 만들었던 게시판 기능 중에 제일 복잡하지 않았나 싶다.
Thread 방식이라고 해야 하나? 지메일과 같은 형태로 코딩을 하고 싶었다.
(아 물론 지메일은 Ajax 방식이라고 하더라...여기까지 건드리기에는 내공 부족이고...그냥 보이는 형태를 그렇게 하고 싶단 얘기다.)

아웃룩을 쓰다가 지메일을 쓸 때는 처음엔 도대체 어떻게 읽고 찾아야 하는지 헷갈렸지만 이제는 지메일처럼 주루룩 관련 내용들이 엮어져 있다보니 이게 매우 편리해졌다.
(참고로 맥의 iMail에서는 제목을 클릭하면 주고 받은 관련 이메일들의 제목도 하이라이팅해줘서 매우 시각적으로 찾기가 쉽다.)

답변하기(reply.php)도 edit.php와 edit_ok.php의 소스를 그대로 가져와 손을 본다.

여기서 중요한 것은 DB의 컬럼을 어떻게 추가할 것인지와 어떤 방식으로 프로그래밍을 할 것이냐인데, 흔히 보는 게시판들은 계층형으로 해서 제목 밑에 re:, re: 이런 식으로 계단식 답변들이 목록에 나온다.

하지만 난 글 제목은 하나고 답변이 있다면 제목 옆에 답변 수를 표시하고 싶었다.
그래서 DB도 아래와 같이 수정을 했다.

reply_no int(11) NOT NULL: 답글의 번호
rel_no int(11) NOT NULL : 답을 단 글의 main_no, 결국 부모글과 답글이 한 그룹으로 묶인다.
depth int(3) NOT NULL default '0' : 몇 단계까지 답글이 달렸는지 체크 (이것은 나중에 목록보기에서 제목 옆에 답글 수를 보여줄 때 쓸 예정) 0 이면 답글이 없고, 이후에는 답글 수 만큼 저장 다시한번 SQL의 ALTER를 돌린다.

하다보니 main_no는 AUTO_INCREMENT 옵션을 주어서 그냥 자동으로 하나씩 증가시키는게 더 편한 것 같아 DB에서도 수정했다.

CREATE TABLE board
(
main_no int(11) NOT NULL AUTO_INCREMENT,
title varchar(30) NOT NULL,
name varchar(20),
content mediumtext,
passwd varchar(20),
date datetime, 
count int(10) default '0',  
email  varchar(40),
reply_no int(11) NOT NULL, 
rel_no int(11) NOT NULL, 
depth int(3) NOT NULL default '0',

PRIMARY KEY (main_no)
)

 

결론은 DB를 싹 지워버리고 재 설치...ㅎㅎㅎ * reply_ok.php 파일에 오류가 있어 다시 올립니다.

뭐 어차피 테스트용이니.

대충 순서는 이렇다.

1. 최상위 부모글을 읽다가 답변버튼을 누른다.
2. reply.php 로 main_no를 넘겨주면서, 부모글을 DB에서 가져와 작성폼에 미리 삽입해 놓는다.
3. 답변 작성이 끝나면 reply_ok.php로 다시 한번 main_no를 넘겨준다. (이미 답글이 있을 수도 있으니 reply_no도 같이 hidden값으로 넘긴다.)
4. reply_ok.php에서는 넘겨 받은 main_no 값과 reply_no 값을 가지고 DB 처리를 한다.

이렇게 되면 소스의 대부분을 수정해야 한다. 리스트 부분, 글을 읽는 부분, 글 수정 부분 등등...
글 읽는 부분은 최상위 부모글은 내용이 보이고, 나머지 답글들이 있을 경우, 답글들은 내용보기를 원할 때만 답글 제목을 클릭해서 내용을 볼 수 있도록 CSS와 자바스크립트를 빌려다 썼다.

아직 갈 길이 멀다.
답변글의 수정과 삭제 기능도 추가가 덜 됐다.

아래 소스의 설치는 간단한다.
웹서버 폴더에 압축을 풀고 create_db.php에서 사용자나 비밀번호를 수정하고,
http://localhost/설치폴더/create_db.php 를 실행한다.

실행 후에는 db_connect.php에서도 DB 관련 정보를 맞게 수정하면 된다.




 

'PHP > 게시판 만들기' 카테고리의 다른 글

검색 기능 추가  (0) 2008.11.22
답글 수정 및 삭제하기  (0) 2008.11.21
페이지 수 출력하기  (1) 2008.11.15
조회수 올리기  (0) 2008.11.14
게시판 만들기 중간정리 (소스 첨부)  (0) 2008.11.14