[๊ตฌ๋์์นด๋ฐ๋ฏธ IT๊ตญ๋น์ง์] ๋ค์ด์ด๋ฆฌ ํ๋ก์ ํธ๋ฅผ ์ด์ด๊ฐ๋ค. ์ด๋ฒ์๋ ์์ (update)๊ธฐ๋ฅ์ ์ถ๊ฐํด๋ณด์๋ค.
์ง๋ ์๊ฐ์ ์ถ๊ฐํ ์์ aํ๊ทธ๋ฅผ ํด๋ฆญํ๋ฉด updateNoticeForm.jsp ํ์ด์ง๋ก ์ด๋ํ๋ค.
์์ฑ๋ ๋ฐ์ดํฐ ํ
์ด๋ธ์ ์์ฑ ์ค ์ฌ์ฉ์๊ฐ form ํ์ด์ง์์ ์ฌ์ฉ์๊ฐ ์์ ๊ฐ๋ฅํ ๋ถ๋ถ์ ์ ๋ชฉ์ธ notice_title์ ๋ด์ฉ์ธ notice_content์ผ ๊ฒ์ด๋ค.
๊ธ๋ฒํธ์ธ notice_no์ ๊ธ์์ฑ์์ธ notice_writer์ ์์ ํ ์ ์๊ณ , createdate์ updatedate๋ ์๋์ผ๋ก ๋ถ์ฌ๋๋ ๊ฒ์ด๋ฏ๋ก ์์ ์ updatedate๋ง ๋ฐ๋๋ฉด ๋ ๊ฒ์ด๋ค.
notice_pw๋ ์ญ์ (delete)์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ๊ณผ ์ผ์นํ๋์ง ํ์ธ (where์ ์ฌ์ฉ)ํ๋๋ฐ ์ฐ์ผ ๊ฒ์ด๋ค.
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.ResultSet" %> <!-- ์์ ํผ๋ select ํด์ผํ๋ฏ๋ก rs ์ด์ฉ -->
<%
// ์ ํจ์ฑ ๊ฒ์ฌ
// null์ผ ๊ฒฝ์ฐ ๋ฆฌ๋ค์ด๋ ์
// ๋ฆฌํด // ์ฝ๋์งํ์ข
๋ฃ // ๋ฐํ๊ฐ์ ๋๊ธธ๋
if(request.getParameter("noticeNo") == null) {
response.sendRedirect("./noticeList.jsp");
return;
}
// null์ด ์๋๊ฒฝ์ฐ
// ๋ณ์์ ๊ฐ ๋ฐ๊ธฐ // int ํ์
์ผ๋ก ๋ณํ
int noticeNo = Integer.parseInt(request.getParameter("noticeNo"));
System.out.println("updateNoticeForm noticeNo: " + noticeNo); // ๋๋ฒ๊น
// 1) ๋๋ผ์ด๋ฒ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
// 2) db์๋ฒ์ ์ ์
Connection conn = DriverManager.getConnection(
"jdbc:mariadb://127.0.0.1:3306/diary","****","****");
// 3) ์ฟผ๋ฆฌ ์์ฑ
// ํด๋น no์ ๋ง๋ ํ์ด์ง ์ถ๋ ฅ == noticeOne ํ์ด์ง์ ๊ฐ์ sql
String sql = "select notice_no, notice_title, notice_content, notice_writer, createdate, updatedate from notice where notice_no = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
// ์ฒซ๋ฒ์งธ ?์ noticeNo ๊ฐ์ set
stmt.setInt(1, noticeNo);
System.out.println("updateNoticeForm sql: " + stmt); // ๋๋ฒ๊น
ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateNoticeForm.jsp</title>
</head>
<body>
<div><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./home.jsp">ํ์ผ๋ก</a>
<a href="./noticeList.jsp">๊ณต์ง ๋ฆฌ์คํธ</a>
<a href="./scheduleList.jsp">์ผ์ ๋ฆฌ์คํธ</a>
</div>
<h1>๊ณต์ง ์์ </h1>
<div><!-- ์๋ฌ๋ฌธ๊ตฌ ์ถ๊ฐ -->
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg") %>
<%
}
%>
</div>
<form action="./updateNoticeAction.jsp" method="post">
<%
if(rs.next()) {
%>
<table>
<tr>
<!-- ์์ ๋ถ๊ฐ์ง๋ง, actionํ์ด์ง์์ where์ ์ ๋ค์ด๊ฐ์ผํ๋ฏ๋ก (๊ฐ์ ๋๊ฒจ์ผํ๋ฏ๋ก) inputํ๊ทธ -->
<td>notice_no</td>
<td>
<input type="number" name="noticeNo" value="<%=rs.getInt("notice_no")%>" readonly="readonly">
</td>
</tr>
<tr>
<!-- ํจ์ค์๋์
๋ ฅ๋, actionํ์ด์ง์์ where์ ์ ๋ค์ด๊ฐ์ผํ๋ฏ๋ก (๊ฐ์ ๋๊ฒจ์ผํ๋ฏ๋ก) inputํ๊ทธ -->
<td>notice_pw</td>
<td>
<input type="password" name="noticePw">
</td>
</tr>
<tr>
<!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>notice_title</td>
<td>
<input type="text" name="noticeTitle" value="<%=rs.getString("notice_title")%>">
</td>
</tr>
<tr>
<!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>notice_content</td>
<td>
<textarea rows="5" cols="80" name="noticeContent"><%=rs.getString("notice_content")%></textarea>
</td>
</tr>
<tr>
<!-- ์์ ๋ถ๊ฐ๋, ์ถ๋ ฅ๋ง ํ๊ธฐ -->
<td>notice_writer</td>
<td>
<%=rs.getString("notice_writer")%>
</td>
</tr>
<tr>
<!-- ์์ ๋ถ๊ฐ๋, ์ถ๋ ฅ๋ง ํ๊ธฐ -->
<td>createdate</td>
<td>
<%=rs.getString("createdate")%>
</td>
</tr>
<tr>
<!-- ์์ ๋ถ๊ฐ๋, ์ถ๋ ฅ๋ง ํ๊ธฐ -->
<td>updatedate</td>
<td>
<%=rs.getString("updatedate")%>
</td>
</tr>
</table>
<%
}
%>
<div>
<button type="submit">์์ </button>
</div>
</form>
</body>
</html>
์์ ํผ์ ์ญ์ ํผ๊ณผ ๋ค๋ฅด๊ฒ ๊ธฐ์กด์ ๊ฐ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ฏ๋ก, select๋ฌธ์ ์ด์ฉํด์ผ ํ๋ค! ์ฆ, noticeOne ํ์ด์ง์ ๊ฑฐ์ ๋น์ท ํ๋ค.
์ด๋ฒ์ ์๋ฌ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋๋๋ก ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐ์ ์ผ๋ก ๋ฐฐ์ ๋ค. action ํ์ด์ง์์ ์๋ฌ ๋ฐ์์ msg ๊ฐ์ ๊ฐ์ง๊ณ form ํ์ด์ง๋ก ๋์์ค๊ฒ ๋๋๋ฐ, msg ๋ฐ์์ ์๋ฌ๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅํ ์ ์๋๋ก if๋ฌธ์ ์์ฑํ๋ค.
์์ ๊ฐ๋ฅํ ๋ถ๋ถ, ์์ ์ด ๋ถ๊ฐ๋ฅํ ๋ถ๋ถ, ์์ ์ด ๋ถ๊ฐ๋ฅํ์ง๋ง actionํ์ด์ง์ ๊ฐ์ ๋๊ฒจ์ผํ๋ ๋ถ๋ถ ๋ฑ ์ ๊ตฌ๋ถํด์ inputํ๊ทธ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋จ์ ์ถ๋ ฅ๋ง ํ๋๋ก ํ๋ค.
๐ ๊ฒฐ๊ณผ
notice_no๋ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค. (ํ์ธ์ฉ)
notice_pw๋ ์์ ์ฉ์ด ์๋๋ผ action ํ์ด์ง์์ update ์คํ์ where์ ์ ์ฌ์ฉ๋ ๊ฐ์ด๋ฏ๋ก value๋ฅผ ๋์ง ์๊ณ ์ฌ์ฉ์๊ฐ ์ง์ ์
๋ ฅํ๋๋ก ํ๋ค.
notice_title๊ณผ notice_content๋ ์ฌ์ฉ์๊ฐ ์์ ํ๋(update ๋๋) ๊ณณ์ด๋ฏ๋ก ์์ ์ ์๋์ ๊ฐ์ ๋ณด์ฌ์ฃผ๊ณ (value๋ฅผ ์ฃผ๊ณ ) ์์ ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ค.
๊ทธ ๋ฐ์ ์์ ๋ ๋ถ๊ฐ๋ฅํ๊ณ action ํ์ด์ง์์ ์ฐ์ด์ง ์๋ ๊ฐ๋ค์ ํ์ธ์ฉ์ผ๋ก ๋จ์ ์ถ๋ ฅ๋ง ๋๋๋ก ํ๋ค.
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
// post๋ฐฉ์ ์ธ์ฝ๋ฉ์ฒ๋ฆฌ // ํ๊ธ ๊นจ์ง์ง ์๊ฒ
request.setCharacterEncoding("utf-8");
//์ ํจ์ฑ ๊ฒ์ฌ (1)
// noticNo๊ฐ null์ด๋ฉด formํ์ด์ง๋ก ๊ฐ ์ ์์ผ๋ฏ๋ก listํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์
if(request.getParameter("noticeNo") == null) {
response.sendRedirect("./noticeList.jsp");
return; // ์ฝ๋์งํ์ข
๋ฃ
}
// ์ ํจ์ฑ ๊ฒ์ฌ (2)
// null ์ด๊ฑฐ๋ ๊ณต๋ฐฑ์ธ ๊ฒ์๋ฐ๋ผ ์๋ฌ๋ฉ์ธ์ง(msg) ๋ถ๊ธฐ
String msg = null;
if(request.getParameter("noticeTitle") == null
|| request.getParameter("noticeTitle").equals("")) {
msg = "noticeTitle is required";
} else if(request.getParameter("noticeContent") == null
|| request.getParameter("noticeContent").equals("")) {
msg = "noticeContent is required";
} else if(request.getParameter("noticePw") == null
|| request.getParameter("noticePw").equals("")) {
msg = "noticePw is required";
}
System.out.println("updateNoticeAction msg: " + msg); // ๋๋ฒ๊น
// msg ๋ฐ์ ์ ์์ ํผ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์
// msg๋ ์ถ๋ ฅ๋๊ฒ ํ๊ธฐ ์ํด ๊ฐ์ด ๋๊ฒจ์ค๋ค
if(msg != null) {
response.sendRedirect("./updateNoticeForm.jsp?noticeNo=" + request.getParameter("noticeNo") + "&msg=" + msg);
return; // ์ฝ๋์งํ์ข
๋ฃ!!!!!!!
}
// null ์ด๊ฑฐ๋ ๊ณต๋ฐฑ์ด ์๋ ๊ฒฝ์ฐ
// ๊ฐ ๋ณ์์ ๋ฐ๊ธฐ (ํ๋ณํ)
int noticeNo = Integer.parseInt(request.getParameter("noticeNo")); // intํ์
์ผ๋ก ๋ณํ
String noticePw = request.getParameter("noticePw");
String noticeTitle = request.getParameter("noticeTitle");
String noticeContent = request.getParameter("noticeContent");
// ๋๋ฒ๊น
// ์ด๋ ํ์ด์ง์ ์ด๋ค ๋๋ฒ๊น
์ธ์ง๋ ์ ์ ์ด์ฃผ๊ธฐ
System.out.println("updateNoticeAction noticeNo: " + noticeNo);
System.out.println("updateNoticeAction noticePw: " + noticePw);
System.out.println("updateNoticeAction noticeTitle: " + noticeTitle);
System.out.println("updateNoticeAction noticeContent: " + noticeContent);
// 1) ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
// 2) mariadb ์๋ฒ์ ์ ์, ์ ์ ์ ์ง
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/diary","****","****");
// 3) ์ฟผ๋ฆฌ ์์ฑ ํ ์คํ
// UPDATE notice SET notice_title=? , notice_content=? , updatedate=now() WHERE notice_no=? AND notice_pw=?
String sql = "UPDATE notice SET notice_title=? , notice_content=? , updatedate=now() WHERE notice_no=? AND notice_pw=?";
PreparedStatement stmt = conn.prepareStatement(sql);
// ? ์ด 4๊ฐ
stmt.setString(1, noticeTitle);
stmt.setString(2, noticeContent);
stmt.setInt(3, noticeNo); // noticeNo๋ intํ์
stmt.setString(4, noticePw);
System.out.println("updateNoticeAction sql: " + stmt); // ๋๋ฒ๊น
// ์ฟผ๋ฆฌ๊ฐ ์ ์คํ๋์๋์ง ํ์ธ
int row = stmt.executeUpdate(); // ์์ ์ฑ๊ณต์ 1, ์คํจ์ 0
System.out.println("updateNoticeAction row: " + row);
// ์์ ์ฑ๊ณต ์ ๋ฌด์ ๋ฐ๋ผ ๋ฆฌ๋ค์ด๋ ์
// = ์ฟผ๋ฆฌ ์คํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํ์ด์ง(View)๋ฅผ ๋ถ๊ธฐํ๋ค
if(row == 0) {
response.sendRedirect("./updateNoticeForm.jsp?noticeNo="
+request.getParameter("noticeNo")
+"&msg=incorrect noticePw");
} else if(row == 1) {
response.sendRedirect("./noticeOne.jsp?noticeNo="+noticeNo);
} else {
// update๋ฌธ ์คํ์ ์ทจ์(rollback)ํด์ผ ํ๋ค
System.out.println("error row๊ฐ : "+row);
}
%>
์ ํจ์ฑ ๊ฒ์ฌ(1)
: noticeNo๊ฐ null์ผ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๋ก ๋ถ๊ธฐํ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์๋ํ๋ฉด ๋ฆฌ๋ค์ด๋ ์
์ "./updateNoticeForm.jsp?noticeNo=" + request.getParameter("noticeNo")" ๋ก ์ฃผ๊ฒ๋๋๋ฐ ์ด๋, noticeNo๊ฐ Stringํ์
(๋ฌธ์์ด)์ธ "null"๋ก ๋ค์ด๊ฐ form ํ์ด์ง์ ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ฑธ๋ฆฌ์ง ์๊ฒ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์, list ํ์ด์ง๋ก ์ ์์ ์ผ๋ก ๊ฐ ์ ์๋๋ก ํด์ค๋ค.
์ ํจ์ฑ ๊ฒ์ฌ(2)
: ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ฑธ๋ ค form ํ์ด์ง๋ก ๋์๊ฐ ๋, ์ด๋ค ๊ฐ์ด null์ด๊ฑฐ๋ ๊ณต๋ฐฑ์ด์๋์ง ์ฌ์ฉ์์๊ฒ ์๋ ค์ฃผ๋ ์๋ฌ๋ฌธ๊ตฌ(msg)๋ฅผ ์ค ์ ์๋๋ก if๋ฌธ์ ์์ฑํ๋ค. ๋ฆฌ๋ค์ด๋ ์
์ msg์ ๊ฐ์ ๊ฐ์ด ๋๊ฒจ์ค๋ค.
update๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์
๋ ฅ๋ ํจ์ค์๋์ ๊ฐ์ ๋ฐ๋ผ ์ผ์นํ์ง ์์ ๊ฒฝ์ฐ(row == 0) ์ญ์ ๊ฐ ์คํจ๋๋ ๋ถ๊ธฐ๊ฐ ์๊ฒผ๋ค. ์ด๋ ํ์ค์๋๊ฐ ์ผ์นํ์ง ์๋๋ค๋ ์๋ฌ๋ฌธ๊ตฌ๋ฅผ ์์ฑํ์ฌ ๊ฐ์ด ๋๊ฒจ ๋ฆฌ๋ค์ด๋ ์
ํ๋ค. ์ ์์ ์ผ๋ก ์์ ๋์์ ๊ฒฝ์ฐ (row == 1) ์์ ๋ ํ์ด์ง๋ฅผ ํ์ธํ ์ ์๋๋ก noticeOneํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์
.
storeํ์ด์ง์๋ ์ง์ update ๊ธฐ๋ฅ์ ์ถ๊ฐํด๋ณด์๋ค. ์ง๋ ์๊ฐ์ ์ถ๊ฐํ ์์ aํ๊ทธ๋ฅผ ํด๋ฆญํ๋ฉด updateStoreForm.jsp ํ์ด์ง๋ก ์ด๋ํ๋ค.
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.ResultSet" %> <!-- select ํด์ผํ๋ฏ๋ก rs์ฌ์ฉ -->
<%
// ์ ํจ์ฑ ๊ฒ์ฌ
// null์ด๊ฑฐ๋ ๊ณต๋ฐฑ์ผ ๊ฒฝ์ฐ ๋ฆฌ๋ค์ด๋ ์
if(request.getParameter("storeNo") == null) {
response.sendRedirect("./storeList.jsp");
// ๋์๊ฐ ์ฃผ์ ์๋ ค์ฃผ๊ธฐ
return;
// ์ฝ๋์งํ์ข
๋ฃ // ๋ฐํ๊ฐ์ ๋๊ธธ๋
}
// null์ด ์๋ ๊ฒฝ์ฐ ๋ณ์์ ๊ฐ ๋ฃ๊ธฐ
int storeNo = Integer.parseInt(request.getParameter("storeNo")); // intํ์
์ผ๋ก ๋ณํ
// ๋๋ฒ๊น
System.out.println("updateStoreForm storeNo: " + storeNo);
// 1) ๋๋ผ์ด๋ฒ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
// 2) db ์๋ฒ ์ฐ๊ฒฐ
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
// 3) ์ฟผ๋ฆฌ ์์ฑ
// ํด๋น no์ ๋ง๋ ํ์ด์ง ์ถ๋ ฅ, where์ ์ฌ์ฉ
String sql = "select * from store where store_no=?";
PreparedStatement stmt = conn.prepareStatement(sql);
// ์ฒซ๋ฒ์งธ ?์ storeNo์ set
stmt.setInt(1, storeNo);
System.out.println("updateStoreForm sql: " + stmt); // ๋๋ฒ๊น
ResultSet rs = stmt.executeQuery();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateStoreForm.jsp</title>
<style>
.center {text-align: center;}
</style>
<!-- ๋ถํธ์คํธ๋ฉ5 ์ฌ์ฉ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="center"><!-- ๋ฉ์ธ๋ฉ๋ด -->
<a href="./storeHome.jsp">ํ์ผ๋ก</a>
<a href="./storeList.jsp">๋ฆฌ์คํธ๋ก</a>
</div>
<h1 class="center">๊ฒ์๊ธ ์์ 🍽</h1>
<div class="center text-bg-danger" ><!-- actionํ์ด์ง์์ ๋ฐํ๋ ์๋ฌ๋ฌธ๊ตฌ ์ถ๊ฐ -->
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg") %>
<%
}
%>
</div>
<div class="container mt-3">
<form action = "./updateStoreAction.jsp" method="post">
<%
if(rs.next()) {
%>
<table class="table table-bordered">
<tr><!-- ์์ ๋ถ๊ฐ, actionํ์ด์ง์์ where์ ์ ์ฌ์ฉํด์ผํ๋ฏ๋ก inputํ๊ทธ -->
<td>๊ธ๋ฒํธ</td>
<td>
<input type="number" name="storeNo" value="<%=rs.getInt("store_no")%>" readonly="readonly" class="form-control">
</td>
</tr>
<tr><!-- ํจ์ค์๋์
๋ ฅ๋, actionํ์ด์ง์์ where์ ์ ์ฌ์ฉํด์ผํ๋ฏ๋ก inputํ๊ทธ -->
<td>๋น๋ฐ๋ฒํธ</td>
<td>
<input type="password" name="storePw">
</td>
</tr>
<tr><!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>์๋น์ด๋ฆ</td>
<td>
<input type="text" name="storeName" value="<%=rs.getString("store_name")%>" class="form-control">
</td>
</tr>
<tr><!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>์นดํ
๊ณ ๋ฆฌ</td>
<td>
<select name="storeCategory" class="form-select">
<option value="<%=rs.getString("store_category")%>">
<%=rs.getString("store_category")%> <!-- ์ด๋ฏธ ์ ํํ ๊ฐ ๋ณด์ฌ์ฃผ๊ธฐ -->
</option>
<option value="ํ์">ํ์</option>
<option value="์ผ์">์ผ์</option>
<option value="์ค์">์ค์</option>
</select>
</td>
</tr>
<tr><!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>์ฃผ์</td>
<td>
<input type="text" name="storeAddress" value="<%=rs.getString("store_address")%>" class="form-control">
</td>
</tr>
<tr><!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>์ ์์</td>
<td>
<input type="number" name="storeEmpCnt" value="<%=rs.getInt("store_emp_cnt")%>" class="form-control">
</td>
</tr>
<tr><!-- ์์ ๊ฐ๋ฅ๋, inputํ๊ทธ -->
<td>๊ฐ์
์ผ์</td>
<td>
<input type="date" name="storeBegin" value="<%=rs.getString("store_begin")%>" class="form-control">
</td>
</tr>
<tr><!-- ์์ ๋ถ๊ฐ๋, ์ถ๋ ฅ๋ง ํ๊ธฐ -->
<td>๊ธ์์ฑ์ผ</td>
<td><%=rs.getString("createdate").substring(0, 10)%></td>
</tr>
<tr><!-- ์์ ๋ถ๊ฐ๋, ์ถ๋ ฅ๋ง ํ๊ธฐ -->
<td>๊ธ์์ ์ผ</td>
<td><%=rs.getString("updatedate").substring(0, 10)%></td>
</tr>
<tr>
<td colspan="2">
<button type="submit" class="btn btn-primary">์์ </button>
</td>
</tr>
</table>
<%
}
%>
</form>
</div>
</body>
</html>
select ํ๊ทธ๋ฅผ ์ด์ฉํ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ์ ํํ ๊ฐ์ ์ถ๊ฐํด์ ๋ณด์ฌ์ฃผ์๋ค. ์๋ ์ํ๋ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ์ ํํ ๊ฐ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋, ํ์/์ผ์/์ค์ ์ค ์ ํํ๋ ๊ฐ์ selected ํ๋ ๊ฒ์ด์๋ค. ์์ ํผ์์ ์ ํ๋ ๊ฐ์ ์ค๋ณต์ผ๋ก ํ์๋๋ ๊ฒ์ด ์ซ์๊ธฐ ๋๋ฌธ์ด๋ค. ๐ฅ ์ด ๋ถ๋ถ์ ๋ ๊ณ ๋ฏผํด๋ณด๊ณ ์ถํ์ ์์ ์์ ๐ค
(23.04.24 ์ถ๊ฐ) if๋ฌธ ์ ํ์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ์์๋ค!! if๋ฌธ์ ์ด์ฉํ๋ฉด ์๊ฐ๋ณด๋ค ๋จ์ํ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค๐ equals ๋ฉ์๋ ์ด์ฉํด์ฃผ๋ ๊ฒ ์์ง ๋ง๊ธฐ!
<select name="storeCategory" class="form-select"> <!-- ์ด์ ์ ์ ํ๋ ๊ฐ selected ๋ ์ํ๋ก ๋ณด์ฌ์ฃผ๊ธฐ -->
<option <%if(rs.getString("store_category").equals("ํ์")){%> selected <%}%>> ํ์ </option>
<option <%if(rs.getString("store_category").equals("์ผ์")){%> selected <%}%>> ์ผ์ </option>
<option <%if(rs.getString("store_category").equals("์ค์")){%> selected <%}%>> ์ค์ </option>
</select>
๐ ๊ฒฐ๊ณผ
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%
// ํ๊ธ์ด ๊นจ์ง์ง ์๊ฒ ํ๋ค. post๋ฐฉ์ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ
request.setCharacterEncoding("utf-8");
// ์ ํจ์ฑ ๊ฒ์ฌ (1)
// storeNo๊ฐ null์ด๋ฉด formํ์ด์ง๋ก ๊ฐ ์ ์์ผ๋ฏ๋ก listํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์
if(request.getParameter("storeNo") == null) {
response.sendRedirect("./storeList.jsp");
return; // ์ฝ๋์งํ์ข
๋ฃ
}
// ์ ํจ์ฑ ๊ฒ์ฌ (2)
// null ์ด๊ฑฐ๋ ๊ณต๋ฐฑ์ธ ๊ฒ์๋ฐ๋ผ ์๋ฌ๋ฉ์ธ์ง(msg) ๋ถ๊ธฐ
// storeCategory๋ selectํ๊ทธ๋ก option์ null๊ฐ์ ์ค ๊ฒ์ด ์์ผ๋ฏ๋ก ์๋ต
String msg = null;
if(request.getParameter("storeName") == null
|| request.getParameter("storeName").equals("")) {
msg = "storeName is required";
} else if(request.getParameter("storeAddress") == null
|| request.getParameter("storeAddress").equals("")) {
msg = "storeAddress is required";
} else if(request.getParameter("storeEmpCnt") == null
|| request.getParameter("storeEmpCnt").equals("")) {
msg = "storeEmpCnt is required";
} else if(request.getParameter("storeBegin") == null
|| request.getParameter("storeBegin").equals("")) {
msg = "storeBegin is required";
} else if(request.getParameter("storePw") == null
|| request.getParameter("storePw").equals("")) {
msg = "storePw is required";
}
// ์๋ฌ๋ฉ์ธ์ง(msg) ๋๋ฒ๊น
System.out.println("updateNoticeAction msg: " + msg);
// msg ๋ฐ์ ์ ์์ ํผ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์
// formํ์ด์ง์ msg๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด ๊ฐ์ด ๋๊ฒจ์ค๋ค
if(msg != null) {
response.sendRedirect("./updateStoreForm.jsp?storeNo=" + request.getParameter("storeNo") + "&msg=" + msg);
return; // ์ฝ๋์งํ์ข
๋ฃ ๊ผญ ํด์ฃผ๊ธฐ!
}
// null ์ด๊ฑฐ๋ ๊ณต๋ฐฑ์ด ์๋ ๊ฒฝ์ฐ
// ๋ณ์์ ๊ฐ ๋ฃ๊ธฐ (ํ๋ณํ)
int storeNo = Integer.parseInt(request.getParameter("storeNo")); // intํ์
์ผ๋ก ๋ณํ
String storeName = request.getParameter("storeName");
String storeCategory = request.getParameter("storeCategory");
String storeAddress = request.getParameter("storeAddress");
int storeEmpCnt = Integer.parseInt(request.getParameter("storeEmpCnt")); // intํ์
์ผ๋ก ๋ณํ
String storeBegin = request.getParameter("storeBegin");
String storePw = request.getParameter("storePw");
// ๊ฐ์ด ์ ์์ ์ผ๋ก ๋์ด์๋์ง ๋๋ฒ๊น
System.out.println("updateStoreAction storeNo: " + storeNo);
System.out.println("updateStoreAction storeName: " + storeName);
System.out.println("updateStoreAction storeCategory: " + storeCategory);
System.out.println("updateStoreAction storeAddress: " + storeAddress);
System.out.println("updateStoreAction storeEmpCnt: " + storeEmpCnt);
System.out.println("updateStoreAction storeBegin: " + storeBegin);
System.out.println("updateStoreAction storePw: " + storePw);
// 1) ๋๋ผ์ด๋ฒ ๋ก๋ฉ
Class.forName("org.mariadb.jdbc.Driver");
// 2) mariadb ์๋ฒ์ ์ ์, ์ ์ ์ ์ง
Connection conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/homework0419","****","****");
// 3) ์ฟผ๋ฆฌ ์์ฑ
// updateํ ๋ด์ฉ: storeName, storeCategory, storeAddress, storeEmpCnt, storeBegin, updatedate
// where์ ๋ค์ด๊ฐ ๋ด์ฉ: storeNo, storePw
// UPDATE store SET store_name=?, store_category=?, store_address=?, store_emp_cnt=?, store_begin=?, updatedate=now() WHERE store_no=? AND store_pw=?
String sql = "UPDATE store SET store_name=?, store_category=?, store_address=?, store_emp_cnt=?, store_begin=?, updatedate=now() WHERE store_no=? AND store_pw=?";
PreparedStatement stmt = conn.prepareStatement(sql);
// ๋ฌผ์ํ ์ด 7๊ฐ (1~7)
stmt.setString(1, storeName);
stmt.setString(2, storeCategory);
stmt.setString(3, storeAddress);
stmt.setInt(4, storeEmpCnt);
stmt.setString(5, storeBegin);
stmt.setInt(6, storeNo);
stmt.setString(7, storePw);
// sql์ด ์ ์์ฑ๋์๋์ง ๋๋ฒ๊น
System.out.println("updateStoreAction sql: " + stmt);
// ์ฟผ๋ฆฌ๊ฐ ์ ์คํ๋์๋์ง ํ์ธ
int row = stmt.executeUpdate(); // ์ฑ๊ณต์ 1, ์คํจ์ 0
System.out.println("updateStoreAction row: " + row);
// if๋ฌธ์ผ๋ก ์์ ์ฑ๊ณต ์ ๋ฌด์ ๋ฐ๋ผ ๋ณด์ฌ์ค ํ์ด์ง(view)๋ฅผ ๋ถ๊ธฐ
if(row == 0) { // ํจ์ค์๋๊ฐ ์ผ์นํ์ง ์์์ ์์ ์คํจ // ํจ์ค์๋๊ฐ ๊ณต๋ฐฑ์ด๊ฑฐ๋ null์ธ ๊ฒฝ์ฐ๋ ์ ํจ์ฑ ๊ฒ์ฌ์์ ๊ฑธ๋ฌ์ง๋ฏ๋ก
msg = "incorrect noticePw";
response.sendRedirect("./updateStoreForm.jsp?storeNo=" + storeNo +"&msg=" + msg);
// ์์ ํผ์ผ๋ก ๋ฆฌ๋ค์ด๋ ์
// ํจ์ค์๋๊ฐ ์ผ์นํ์ง ์์๋ค๋ msg๋ฅผ ๊ฐ์ด ๋ณด๋ด์ค๋ค
} else if(row == 1) { // ์ ์์ ์ผ๋ก ์์ ์๋ฃ
response.sendRedirect("./storeOne.jsp?storeNo=" + storeNo);
// ์์ ๋ ๊ฒ์๊ธ ํ์ธ์ ์ํด ์์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์
}
%>
๐ ๊ฒฐ๊ณผ
msg ๋ฐ์์ form ํ์ด์ง
์ค๋์ ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๋ง ๋ฐฐ์ ์ง๋ง, ์ถ๊ฐ์ ์ผ๋ก ๋ ์ธ๋ฐํ๊ฒ ๋ฆฌ๋ค์ด๋ ์
์ ๋ถ๊ธฐํ๋ ๋ฐฉ๋ฒ๊ณผ msg๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ ๋ฑ ์กฐ๊ธ๋ ๋ํ
์ผํ ๊ตฌํ์ ํ ์ ์์๋ค. select ํ๊ทธ๋ฅผ ์ฌ์ฉํ์์์ form ํ์ด์ง์์ ์ ํํ ๊ฐ์ด selected๋ ์ํ๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด ์์์ง ๋ ์ฐพ์๋ด์ผ๊ฒ ๋ค! ๐ค