2016-12-28 318 views
0

在下圖中,當用戶按下提交按鈕時,應用程序將選擇的數字插入到數據庫中。但它不適用於activityid號碼。按提交按鈕後,activityid返回null並且返回選擇的數字。我該怎麼辦插入正確activityid數據庫enter image description here檢索數據並插入數據庫

music.jsp

<table border="1" width="30%" height="30%"> 
      <th><font color='#D18603'>ActivityID</font> 
      <th><font color='#D18603'>Type</font></th> 
      <th><font color='#D18603'>Description</font></th> 
      <th><font color='#D18603'>City</font></th> 
      <th><font color='#D18603'>Location</font></th> 
      <th><font color='#D18603'>Date</font></th> 
      <th><font color='#D18603'>Price</font></th> 
      <th><font color='#D18603'>Buy</font> 

         <% 
          Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
          Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/users", "users", "123"); 

          Statement st = con.createStatement(); 
          ResultSet rs; 
          rs = st.executeQuery("select * from activities where type='müzik'"); 
          while (rs.next()) { 

           out.println("<tr>"); 
           out.println("<td>" + rs.getString("id")+"</td>"); 
           out.println("<td>" + rs.getString("type")+ "</td>"); 
           out.println("<td>" + rs.getString("description")+ "</td>"); 
           out.println("<td>" + rs.getString("city") + "</td>"); 
           out.println("<td>" + rs.getString("location")+ "</td>"); 
           out.println("<td>" + rs.getString("date") + "</td>"); 
           out.println("<td>" + rs.getString("price") + "</td>"); 
           out.println("<td><b><form action='reservations.jsp'><select name='buy'><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select><input type='submit' value='Submit'></form></b>"); 
           out.println("</tr>"); 

          } 
          st.close(); 

         %> 

Reservation.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@ page import ="java.sql.*" %> 
<% 

String username = (String) request.getSession().getAttribute("username"); 
Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); 
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/users", "users", "123"); 

String sorgu = "INSERT INTO reservation(id,username,buy) VALUES ('" + request.getParameter("id") + "', '" + username + "','" + request.getParameter("buy") + "') "; 

java.sql.Statement st = con.createStatement(); 

int rowNum = st.executeUpdate(sorgu); 
response.sendRedirect("paypal.html"); 
st.close(); 
%> 
+0

我沒有看到您分配一個名稱ActivityId列將其作爲參數傳遞給它。 –

+0

是的。這就是問題。我怎樣才能做到這一點 ?我搜索了谷歌,但icannot找到。這是我的解決方案,你能幫我嗎? – tripley

回答

1

你需要得到周圍每一行中的所有數據的標籤,並添加(隱藏)表單標籤到每個列,以便所有數據都包含在表單提交中。爲了清楚起見,我已經消除了一切,但如何組織形式的標籤,以及如何以包括表單提交的「ID」

     rs = st.executeQuery("select * from activities where type='müzik'"); 
         while (rs.next()) { 

          out.println("<tr>"); 
          out.println("<form action='reservations.jsp'>"); 
          out.println("<td>" + rs.getString("id") + "<input type='hidden' name='id' value='" + td.getString("id")+"'></td>"); 
          out.println("<td><input type='submit' value='Submit'></form></b></td>"); 
          out.println("</td></tr>"); 

         } 
         st.close(); 
+0

我做了你所說的,但它在數據庫中的活動ID仍然爲空 – tripley

+0

對不起,我忘了將「name ='id'」添加到輸入字段。我糾正了我的答案。但問題是,值提供給db插入jsp頁面的參數或數據庫中的數據不可用?這是與參數,對不對? – ControlAltDel

+0

謝謝你現在的作品 – tripley