티스토리 뷰
아오;.. 글 다 썼는데; 날려먹었네요;..
따른곳에서 화면 불러와서 저장했더니만;.. 다른 글이 저장되어버렸어요;..
지난 게시판5 글을 쓰고 한참만에 글을 쓰네요..
요새 제우스, 웹투비, 오라클 연동하고있어서 바빴습니다..
제가 벌려 놓은 일은 많은데.. 수습할 능력이 안되다 보니;..
이렇게 벌려 놓으면 소는 누가 키워;..
아무튼 오늘은 게시판 만들기 마지막 수정을 해보도록 하겠습니다..
수정은 지금까지 했던 부분 연결만 하면 됩니다..
수정할 글을 보기 위해 글 내용을 보고..
그 글 내용에서 수정 버튼을 누르면 수정 폼이 나타나고..
그 수정 폼에서 작성한 것을.. 다른 페이지로 넘겨주고..
그 페이지에서 오라클로 업데이트 하면서 글 목록 페이지로 넘어가는 것을 해볼겁니다..
우선 'board_modify.jsp' 를 만듭니다..
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
<%@ page language="java" import="java.util.*, java.sql.*, javax.servlet.http.*" %>
글 내용을 봐야 하니까 당연히 오라클 메소드가 필요하겠죠?..
<%!
Connection DB_Connection() throws ClassNotFoundException, SQLException, Exception
{
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
Class.forName( "oracle.jdbc.driver.OracleDriver" );
Connection conn = DriverManager.getConnection( url, "study", "study" );
return conn;
}
String TO_DB( String str ) throws Exception
{
if( str == null )
return null;
return new String( str.getBytes( "8859_1" ), "euc-kr" );
}
%>
<%
Connection conn = DB_Connection();
Statement stmt = null;
ResultSet rs = null;
Vector v_name = new Vector();
Vector v_email = new Vector();
Vector v_homepage = new Vector();
Vector v_subject = new Vector();
Vector v_memo = new Vector();
Vector v_hits = new Vector();
String str_aid = request.getParameter( "str_aid" );
int aid = Integer.parseInt( str_aid );
글 내용을 불러옵니다..
지금까지 해왔던 내용들이라 쉽게 이해하실듯 것 같습니다..
String sql_a = "select dbname, nvl(dbemail,' '), nvl(dbhomepage,' '), dbsubject, dbmemo from board where aid=" + aid;
try
{
stmt = conn.createStatement();
rs = stmt.executeQuery( sql_a );
if( rs.next() )
{
v_name.addElement( rs.getString(1) );
v_email.addElement( rs.getString(2) );
v_homepage.addElement( rs.getString(3) );
v_subject.addElement( rs.getString(4) );
v_memo.addElement( rs.getString(5) );
}
stmt.executeUpdate( sql_a );
rs.close();
stmt.close();
conn.close();
}
catch( Exception e )
{
out.println( e.toString() );
return;
}
%>
<script language="javascript">
function writeCheck()
{
var form = document.w;
if( !form.dbsubject.value )
{
alert( "제목을 적어주세요" );
form.dbsubject.focus();
return;
}
if( !form.dbmemo.value )
{
alert( "내용을 적어주세요" );
form.dbmemo.focus();
return;
}
form.submit();
}
</script>
<html>
<head>
<title>게시판</title>
</head>
<form name=w method=post action="board_modify_insert.jsp">
<table cellspacing = 0 cellpadding = 5 border = 1 width=500>
<form name=writeform method=post action="board_write_insert.jsp">
<tr><td><b>이름 </b></td><td><%=v_name.elementAt(0)%><input type=hidden name=dbname size=50 maxlength=30 value="<%=v_name.elementAt(0)%>"></td><tr>
<tr><td><b>이메일 </b></td><td><input type=text name=dbemail size=50 maxlength=50 value="<%=v_email.elementAt(0)%>"></td></tr>
<tr><td><b>홈페이지 </b></td><td><input type=text name=dbhomepage size=50 maxlength=50 value="<%=v_homepage.elementAt(0)%>"></td></tr>
<tr><td><b>제목 </b></td><td><input type=text name=dbsubject size=50 maxlength=50 value="<%=v_subject.elementAt(0)%>"></td></tr>
<tr><td><b>내용 </b></td><td><textarea name=dbmemo cols=50 rows=10><%=v_memo.elementAt(0)%></textarea></td></tr>
</form>
</table>
<table cellspacing = 0 cellpadding = 0 border = 0 width=500>
<tr><td>
<center>
<input type=button value="재등록" OnClick="javascript:writeCheck();">
<input type=button value="목록" OnClick="window.location='board_list.jsp'">
</center>
</td></tr>
</table>
</html>
우선 글 수정 폼 부터 만들어봤습니다..
완성하면 이런 모습이겠죠..
그런데.. 글 수정 폼으로 가기 위해선 당연히 수정 버튼이 있어야겠죠?..
'board_view.jsp' 에 글 수정 버튼을 추가합니다..
<script language='javascript'>
function boardlist()
{
location.href="board_list.jsp?str_c_page=<%=str_c_page%>";
}
function boarddelete()
{
location.href = 'board_delete.jsp?str_aid=<%=aid%>';
}
function boardmodify()
{
location.href = 'board_modify.jsp?str_aid=<%=aid%>';
}
</script>
<html>
<head>
<title>글보기</title>
</head>
<table cellspacing = 0 cellpadding = 5 border = 1 width=500>
<tr><td><b>조회수</b></td><td><%=hits%></td></tr>
<tr><td><b>이름 </b></td><td><%=v_name.elementAt(0)%></td></tr>
<tr><td><b>이메일 </b></td><td><%=v_email.elementAt(0)%></td></tr>
<tr><td><b>홈페이지 </b></td><td><%=v_homepage.elementAt(0)%></td></tr>
<tr><td><b>제목 </b></td><td><%=v_subject.elementAt(0)%></td></tr>
<tr><td><b>내용 </b></td><td width=350><%=v_memo.elementAt(0)%></td></tr>
</table>
<table cellspacing = 0 cellpadding = 0 border = 0 width=500>
<tr><td>
<input type=button value="수정" OnClick="javascript:boardmodify();">
<input type=button value="삭제" OnClick="javascript:boarddelete();">
<input type=button value="목록" OnClick="window.location='board_list.jsp'">
</td></tr>
</table>
</html>
그럼 이렇게 버튼이 생기고.. 버튼을 눌렀을때.. 글 수정 페이지가 나오게 됩니다..
이제 수정 폼에 입력한 값들을 넘겨 받아 오라클에 넣어주는..
'board_modify_insert.jsp' 파일을 만듭니다..
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
<%@ page language="java" import="java.util.*, java.sql.*, javax.servlet.http.*" %>
넘겨 받은 값들을 오라클에 집어 넣어야 하니.. 당연히 오라클 메소드가 필요하죠..
<%!
Connection DB_Connection() throws ClassNotFoundException, SQLException, Exception
{
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
Class.forName( "oracle.jdbc.driver.OracleDriver" );
Connection conn = DriverManager.getConnection( url, "study", "study" );
return conn;
}
String TO_DB( String str ) throws Exception
{
if( str == null )
return null;
return new String( str.getBytes( "8859_1" ), "euc-kr" );
}
%>
<%
Connection conn = DB_Connection();
Statement stmt = null;
stmt = conn.createStatement();
StringBuffer query = null;
String dbname = request.getParameter( "dbname" );
dbname = TO_DB( dbname );
String dbemail = request.getParameter( "dbemail" );
String dbhomepage = request.getParameter( "dbhomepage" );
String dbsubject = request.getParameter( "dbsubject" );
dbsubject = TO_DB( dbsubject );
String dbmemo = request.getParameter( "dbmemo" );
dbmemo = TO_DB( dbmemo );
넘겨준 값이 ?? 이 나오면 예전 처럼 TO_DB 부분을 //dbmemo = TO_DB( dbmemo ); 주석처리 해주시면 됩니다..
try
{
query = new StringBuffer();
이번엔 또 새로운 방식으로 쿼리를 짜봤습니다.. 여러방식으로 쿼리를 작성하는 방법을 알아두시고..
편하신 방법대로 작성하시면 되겠습니다..
이 방법을 저는 가장 많이 사용합니다.. 아래 방법을 사용하실땐 강조해놓은 것들은 필수입니다..
query
.append("update board set \n")
.append(" dbemail ='").append(dbemail).append("', \n")
.append(" dbhomepage ='").append(dbhomepage).append("', \n")
.append(" dbsubject ='").append(dbsubject).append("', \n")
.append(" dbmemo ='").append(dbmemo).append("' \n")
.append("where dbname = '").append(dbname).append("' \n");
stmt.executeUpdate( query.toString() );
stmt.close();
conn.close();
}
catch( Exception e )
{
out.println( e.toString() );
return;
}
out.print( query.toString());
%>
수정을 완료하면 완료했다는 창을 나타내고 글 목록으로 넘어가게 해줍니다..
<html>
<head>
<script language=javascript>
self.window.alert("입력한 글을 수정하였습니다.");
location.href="board_list.jsp";
</script>
</head>
</html>
자 그럼 수정을 해봅시다..
이름은 변경 못하도록 했습니다.. 변경하고 싶으면 수정하시면 됩니다..
페이지 테스트 -> 수정 테스트 로 바꿔 보겠습니다..
재등록!.. 과 함께 수정하였다는 알림창!..
그리고 글 목록을 봤는데;.. 헉..
제가 테스트 하려고 올려놓은 글들이 전체 수정되어버렸습니다;..
조건을 이름으로 해놔서.. 이름이 "페이지 테스트" 인건 전부.. 바꾼것이죠;..
원하는건 3번만 바꾸는건데;..
3번만 바꾸기 위해서는 조건이 더 필요합니다..
조건을 추가해 줍시다..
업데이트를 하는 부분인 'board_modify_insert.jsp' 에 아래 부분들을 추가합니다..
try
{
query = new StringBuffer();
query
.append("update board set \n")
.append(" dbemail ='").append(dbemail).append("', \n")
.append(" dbhomepage ='").append(dbhomepage).append("', \n")
.append(" dbsubject ='").append(dbsubject).append("', \n")
.append(" dbmemo ='").append(dbmemo).append("' \n")
.append("where dbname = '").append(dbname).append("' \n")
글 번호를 조건으로 줘서 이름과 글번호가 같은 글만 수정이 가능하도록 했습니다..
사실 글번호는 중복이 없으니 글번호만 넣어줘도 됩니다..
이름 수정하고 싶은 분들은 where dbname을 위에 dbmemo 처럼 만들어주시고..
and aid 를 where aid 로 바꿔주시면 됩니다..
아무튼 저는 작성자와 글 번호를 조건으로 줬습니다..
.append("and aid = '").append(aid).append("' \n");
stmt.executeUpdate( query.toString() );
stmt.close();
conn.close();
}
이상태에서 아무리 재등록해봤자 에러? 아마 그럴겁니다..
'board_modify_insert.jsp' 에는 aid 변수를 설정해 둔게 없거든요..
String dbname = request.getParameter( "dbname" );
dbname = TO_DB( dbname );
String dbemail = request.getParameter( "dbemail" );
String dbhomepage = request.getParameter( "dbhomepage" );
String dbsubject = request.getParameter( "dbsubject" );
dbsubject = TO_DB( dbsubject );
String dbmemo = request.getParameter( "dbmemo" );
dbmemo = TO_DB( dbmemo );
String str_aid = request.getParameter( "str_aid" );
int aid = Integer.parseInt( str_aid );
자.. 이제 끝?.. 아니죠.. str_aid 값을 찍어보면 null 값이 나와서 다시 에러가 나올겁니다..
'board_modify.jsp' 에서 aid 값이 안넘어 왔거든요..
그럼 'board_modify.jsp' 에서 aid 값을 'board_modify_insert.jsp' 로 넘겨줍시다..
'board_modify.jsp' 를 수정합니다..
<form name=w method=post action="board_modify_insert.jsp">
input 타입을 히든으로 해서 값이 넘어가는걸 보여주지 않지만.. str_aid 에는 현재 글 번호의 값이 들어갑니다..
<input type="hidden" name="str_aid" value="<%=str_aid %>">
<table cellspacing = 0 cellpadding = 5 border = 1 width=500>
<form name=writeform method=post action="board_write_insert.jsp">
<tr><td><b>이름 </b></td><td><%=v_name.elementAt(0)%><input type=hidden name=dbname size=50 maxlength=30 value="<%=v_name.elementAt(0)%>"></td><tr>
<tr><td><b>이메일 </b></td><td><input type=text name=dbemail size=50 maxlength=50 value="<%=v_email.elementAt(0)%>"></td></tr>
<tr><td><b>홈페이지 </b></td><td><input type=text name=dbhomepage size=50 maxlength=50 value="<%=v_homepage.elementAt(0)%>"></td></tr>
<tr><td><b>제목 </b></td><td><input type=text name=dbsubject size=50 maxlength=50 value="<%=v_subject.elementAt(0)%>"></td></tr>
<tr><td><b>내용 </b></td><td><textarea name=dbmemo cols=50 rows=10><%=v_memo.elementAt(0)%></textarea></td></tr>
</form>
</table>
다 수정했으면 다시 테스트!..
제가 수정을 원하는 3번 글을 수정합니다..
수정 완료!..
글은 8일에 썼는데.. 이것저것 하다보니.. 뒤로 3일이나 밀렸네요 ㅎㅎ..
오늘의 소스코드입니다..
그동안 따라오시느라 수고하셨구요..
더 많이 공부해서 더 좋은 내용 올리도록 노력하겠습니다..
저작권 표시 꼭!.. 상업적 이용 절대 불가!.. 컨텐츠 변경 안됨!..
- Total
- Today
- Yesterday
- 2011사진공모전
- DLC
- NDS
- 동물의숲
- 겨울
- Free Coupon
- 젤다의 전설
- Spore
- 오라클
- 3분 영어 위클리
- oracle
- 가을
- CNN Student News
- 야생의 숨결
- 동유럽
- 스포어
- 슈퍼마리오 RPG
- NDS GAME LIST
- 군대이야기
- Project Diet
- 게시판
- 웃기는 사진
- 아이폰
- 티스토리달력2011
- Wii GAME
- C/C++
- 티스토리달력2010
- ndsl
- jsp
- NDSi
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |