[회원가입 사이트 만들기] 7. 게시판 만들기

2024. 4. 10. 10:02복습/인터넷 보안 실습

DB에 게시판 테이블 만들어주기

 

회원 정보가 담긴 테이블이 있는 DB에 

 

게시판 정보를 담을 테이블을 추가로 생성해준다.

 

코드는 아래와 같다.

 

create table board
(
bidx int primary key identity(1,1) not null,
bno int not null, --글 번호
name varchar(30) not null, -- 글쓴이 아이디
title varchar(50) not null, --글 제목
bcontent text not null, -- text는 2000자까지 작성 가능, 글 내용
pwd varchar(10) not null, --게시글 패스워드
email varchar(50) not null, 
wdate datetime default (getdate()), -- 작성 시간 write date
readno int not null -- 글 조회수
)

 

생성이 완료되었으면, select 구문을 통해 확인해준다.

 

 

결과탭에 bidx 부터 바르게 생성된 것을 확인할 수 있다.

 

 

게시글 입력 양식 만들기 (write.asp)

 

글쓰기 창은 작성자를 다른 사람으로 변경할 수 없도록하고,

 

이메일은 처음엔 본인의 이메일이 뜨지만, 수정 가능하도록 한다.

 

이를 구현하기 위한 코드의 일부분이다. 

 

 <TABLE style="width:500px;height:400px;">
<TR><TH><FONT color="white">UserID</FONT></TH>
<TD><%=rs("userid")%></TD></TR>
<TR><TH><FONT color="white">Email</FONT></TH>
<TD><INPUT type="text" name="email" value="<%=rs("email")%>"></TD></TR>

 

UserID 부분에서는 input 태그 없이

 

<%=rs("userid")%> 만을 넣어 고정시키고 

 

Email 부분에서는 input 태그와

 

<%=rs("email")%>를 같이 넣어 수정 가능하게 해준다.

 

 

그리고 DB와 연동 시키는 구문, 접근 제어 구문등을 적어주고,

 

HTML의 Table 태그로 대략적인 형태를 잡아준 뒤에

 

http://localhost/MySite/write.asp 다음 링크로 접속하면

 

 

이런 식으로 나타나는 걸 확인할 수 있다.

 

만약 접근 제어로 인해 오류가 생긴다면,

 

http://localhost/MySite/login.asp 에서 로그인을 해준뒤 접속하면 된다.

 

게시글 DB로 보내기 (write_go.asp) 

 

지금은 write.asp 페이지에서 작성한 정보를

 

DB로 가져가는 역할을 하는 코드가 없어서 

 

글을 쓰려고 해도 에러가 발생할 것이다. 

 

 

이전에 작성했던 mem_edit_reg.asp 역시

 

mem_edit.asp에서 수정한 회원 정보를

 

DB로 옮겨주는 역할을 했었는데,

 

이번에 작성할 write_go.asp 역시 같은 동작을 한다.

 

write_go.asp를 작성해보자.

name = session("id")
email = request.form("email")
title = request.form("title")
bcontent = request.form("content")
pwd = request.form("pwd")

 

우선, request.form 을 통해 write.asp에서 작성했던 정보를 

 

다른 변수에 저장해준다. 

 

bcontent = request.form("content") 에서

 

content는 write.asp 에서 붙여준 이름으로,

 

write.asp 에서 content에 어떤 내용을 작성했다면,

 

request.form("content") 는 그 내용을 불러온 것이다.

 

 

     참고 : write.asp 의 코드 일부

      <TEXTAREA name="content" rows="10" cols="60"></TEXTAREA>

 

 

또한, bcontent는 그 내용을 저장하는 새로운 변수이다.

 

이제 write_go.asp를 마저 작성해보자.

sql ="select max(bno) as maxbno from board" 
set rs = dbconn.execute(sql)
	
	if isNull(rs("maxbno")) then 
	   bno = 1 
       
	else
	   bno = rs("maxbno")+1 
       
	end if 
	
	sql ="Insert into board values ("
	sql = sql &bno&",'"
	sql = sql &name&"','"
	sql = sql &title&"','"
	sql = sql &bcontent&"','"
	sql = sql &pwd&"','"
	sql = sql &email&"', default, 0)"
	dbconn.execute(sql)
	response.redirect "default.asp"
	
end if%>

 

이는 bno (글번호)의 최대값을 DB에서 검색한 뒤,

 

최대 글번호가 없다면 현재 글 번호를 1로,

 

최대 글번호가 있다면 그 값에 1을 더한 값을 현재 글 번호로 정해주고,

 

글 번호와 다른 정보들을 DB로 옮겨주는 역할을 해준다. 

 

 

이제 http://localhost/MySite/write.asp 에서 글을 작성한 뒤,

 

 

DB에서 확인해보면 글이 올라온 것을 확인할 수 있다.

 

다음 글에서는 게시글을 사이트에서도 확인할 수 있도록 

 

초기화면을 수정해주고, 게시글을 읽으면 조회수가 올라가는 코드를 작성할 것이다.