複数のチェックボックスの値をmysqlデータベースの別々の行に挿入する際に助けが必要です。複数のチェックボックスの値をmysqlの別々の行に挿入する
ワークフロー:
1.ユーザーは、製品のチェックボックスを選択し、特定のチェックボックスに次のテキストボックスに製品についての説明に入ります。
2.チェックボックスをオンにすると、ユーザーは保存ボタンを押します。
3.保存をクリックすると、製品の詳細をデータベースに挿入する必要があります。 注:ユーザーは、複数のチェックボックス値を選択できます。
問題:
私は値を挿入する一般的な方法を使用していたが、唯一の1つのチェックボックスの値がdatabase.Iに挿入なっているにそのテキストボックスの値と一緒に複数のチェックボックスの値を挿入する必要があります保存ボタンをクリックすると、データベースが別の行として表示されます。
これは私のコードあなたが受信したすべての入力の配列を取得するには、サーブレットの使用request.getParameterValues("prod")
で
products.jsp
<%@page import="java.util.List"%>
<%@page import="web.Products"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<form method="post" action="Save_Products">
<b>
Brand Name:<font color="green">
<% String brand_name=(String)session.getAttribute("brand_name");
out.print(brand_name);%>
<c:set var="brand_name" value="brand_name" scope="session" />
</font></b>
<table>
<tr>
<th> Products</th>
<th> Description </th>
</tr>
<tr>
<td> <b><%
List<Products> pdts = (List<Products>) request.getAttribute("list");
if(pdts!=null){
for(Products prod: pdts){
out.println("<input type=\"checkbox\" name=\"prod\" value=\"" + prod.getProductname() + "\">" + prod.getProductname()+"<br>");
} %> </b></td>
<td><%for(Products prod: pdts){
out.println("<input type=\"text\" name=\"desc\" style=\"width:50px; height:22px\"/><br/>");
}
}
%> </td>
</tr>
<br/>
<br/>
<tr><td align="center"> <input type="submit" value="Save" name="save"/> </td></tr>
</table>
</form>
</body>
</html>
サーブレットコード
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;
public class Save_Products extends HttpServlet {
static final String dbURL = "jdbc:mysql://localhost:3306/pdt";
static final String dbUser = "root";
static final String dbPass = "root";
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ResultSet rs=null;
Connection connection = null;
try{
HttpSession session = request.getSession();
String brand_name =(String) session.getAttribute("brand_name");
String prod=request.getParameter("prod");
String desc=request.getParameter("desc");
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection (dbURL,dbUser,dbPass);
String sql="insert into pdt_list(brand_name,product_name,desc)values(?,?,?)";
PreparedStatement prep = connection.prepareStatement(sql);
prep.setString(1, brand_name);
prep.setString(2, prod);
prep.setString(3,desc);
int i=prep.executeUpdate();
if(i>0)
{
out.print("Product Details Saved Successfully...");
RequestDispatcher rd=request.getRequestDispatcher("Save_Success.jsp");
rd.forward(request,response);
}
else{
RequestDispatcher rd=request.getRequestDispatcher("Save_Failure.jsp");
rd.forward(request,response);
}
prep.close();
}
catch(Exception E){
//Any Exceptions will be caught here
System.out.println("The error is"+E.getMessage());
}
finally {
try {
connection.close();
}
catch (Exception ex) {
System.out.println("The error is"+ex.getMessage());
}
}
}
}
リクエストがパラメータ配列を送信したようですが、そのような場合は、 'request.getParameter(...)'の代わりに 'request.getParameterValues(...);'を使用して、これをループしてくださいデータベースに複数の行を挿入することができます。 – Titus