【发布时间】:2014-05-28 04:43:06
【问题描述】:
这是我的jsp代码,我正在使用javascript动态添加和删除行,但是在将详细信息插入数据库mysql时,它只会插入1行..如何使用servlet将动态添加的行值添加到数据库中.. 这是我的代码
<html>
<head>
<title> Timeline Sheet</title>
<SCRIPT language="javascript">
$('form').change(function(){
$('form').submit();
});
function validLogin(){
if (document.form.eid.value == ""){
alert ( "Please enter Employee Id." );
document.form.eid.focus();
return false;
}
if (document.form.ename.value == ""){
alert ( "Please enter Employee Name." );
document.form.ename.focus();
return false;
}
alert ( "Inserted Successfully" );
return true;
}
function addRow(tableID) {
var table = document.getElementById(tableID);
// rowCount = table.rows.length;
var row = table.insertRow(1);
var colCount = table.rows[2].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[2].cells[i].innerHTML;
//alert(newcell.childNodes);
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = 0;
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
case "value":
newcell.childNodes[0].value=0;
}
}
}
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for(var i=1; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
if(rowCount <= 3) {
alert("Cannot delete all the rows.");
break;
}
table.deleteRow(i);
rowCount--;
i--;
}
}
}catch(e) {
alert(e);
}
}
function getColumnCount()
{
return document.getElementById('dataTable').getElementsByTagName('tr') [1].getElementsByTagName('td').length;
}
function getRowCount()
{
return document.getElementById('dataTable').rows.length;
}
function doAdd(ths)
{
//alert(ths.parentNode.cellIndex);
//alert(getColumnCount());
var lastCol = getColumnCount()-1;
var lastRow = getRowCount()-1;
//for Column Sum
var table = document.getElementById("dataTable");
var row = table.rows[ths.parentNode.parentNode.rowIndex];
var colSum=0;
for(var i=4;i<lastCol;i++)
colSum=eval(colSum) + eval(row.cells[i].childNodes[0].value);
row.cells[lastCol].innerHTML = colSum;
//for Row Sum
var cIndex = ths.parentNode.cellIndex;
//alert(cIndex);
var rowSum = 0;
for(var i=1;i<lastRow;i++)
rowSum = eval(rowSum) + parseInt(table.rows[i].cells[cIndex].childNodes[0].value);
table.rows[lastRow].cells[cIndex].innerHTML = rowSum;
//grand Total
var finSum = 0;
for(var i=1;i<lastRow;i++)
finSum = eval(finSum) + parseInt(table.rows[i].cells[lastCol].innerHTML);
table.rows[lastRow].cells[lastCol].innerHTML = finSum;
}
</SCRIPT>
</head>
<body>
<center> <b> <i>SAMPLE TIMELINE SHEET </b> </i> </center>
<br>
<br>
<form name="form" action="LoginServlet" method="post" onsubmit="return validLogin();">
Employee ID:<input type="text" name="eid"><br><br>
Employee Name:<input type="text" name="ename"><br><br>
From Date<input type="date" name="fromDate" />
To Date:<input type="date" name="todate">
<br>
<br>
<br>
<table id="dataTable" border="2" cell padding="1" cell spacing="1">
<tr>
<th style="background-color:white"></th>
<th>Project</th>
<th>Reports</th>
<th>Activity</th>
<th > Monday </th>
<th> Tuesday </th>
<th> Wednesday</th>
<th> Thursday </th>
<th> Friday </th>
<th> Saturday </th>
<th> Sunday </th>
<th>No. Of Hrs</th>
</tr>
<tr>
<td><INPUT type="checkbox" name="chk"/></td>
<td><select name="project">
<option value="A">A</option>
<option value="B">B</option>
</select></td>
<td><select name="reports">
<option value="Resource Pyramid">Resource Pyramid</option>
<option value="Migration">Migration</option>
<option value="Timesheet Form">Timesheet Form</option>
<option value="Timesheet Report">Timesheet Report</option>
</select></td>
<td> <select name="activity">
<option value="Development">Development</option>
<option value="Testing">Testing</option>
<option value="Research">Research</option>
<option value="Data Upload">Data Upload</option>
<option value="Design Review">Design Review</option>
<option value="Documentation">Documentation</option>
<option value="Leave">Leave</option>
<option value="Holiday">Holiday</option>
<option value="Pre Sales">Pre Sales</option>
<option value="Installation">Installation</option>
<option value="Miscellaneous">Miscellaneous</option>
<option value="Back Up">Back Up</option>
<option value="Migration">Migration</option>
<option value="Defect Fixing">Defect Fixing</option>
</select></td>
<td><input type="number" name="mon" value="0" onchange="doAdd(this)"></td>
<td><input type="number" name="tue" value="0" onchange="doAdd(this)"></td>
<td><input type="number" name="wed" value="0" onchange="doAdd(this)"></td>
<td><input type="number" name="thur" value="0" onchange="doAdd(this)"></td>
<td><input type="number" name="fri" value="0" onchange="doAdd(this)"></td>
<td><input type="number" name="sat" value="0" onchange="doAdd(this)"></td>
<td><input type="number" name="sun" value="0" onchange="doAdd(this)"></td>
<td>0</td>
</tr>
</table>
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" name="addrow" />
<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
<input type="button" name="save" value="Save">
<input type="Submit" name="submit" value="Submit" >
</form>
</body>
</html>
而我的 Servlet 代码是:
public class LoginServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
if (request.getParameter("submit") != null) {
// Invoke FirstServlet's job here.
response.setContentType("text/html");
String id=request.getParameter("eid");
String name=request.getParameter("ename");
String fromdate=request.getParameter("fromdate");
String todate=request.getParameter("todate");
String project=request.getParameter("project");
String reports=request.getParameter("reports");
String activity=request.getParameter("activity");
String mon=request.getParameter("mon");
String tue=request.getParameter("tue");
String wed=request.getParameter("wed");
String thur=request.getParameter("thur");
String fri=request.getParameter("fri");
String sat=request.getParameter("sat");
String sun=request.getParameter("sun");
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/timeline","root", "root");
String stringDate ="01-01-2012 ";
String stringDate1 ="02-01-2012 ";
SimpleDateFormat sdf= new SimpleDateFormat("mm-dd-yyyy");
SimpleDateFormat sdf1= new SimpleDateFormat("mm-dd-yyyy");
java.util.Date uDate = sdf.parse(stringDate);
java.util.Date uDate1 = sdf1.parse(stringDate1);
java.sql.Date sqlDate = new java.sql.Date(uDate.getDate());
java.sql.Date sqlDate1 = new java.sql.Date(uDate1.getDate());
String sql="insert into employeeform(id,name,fromdate,todate,project,reports,activity,mon,tue,wed,thur,fri,sat,sun)value(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement stmt=con.prepareStatement(sql);
stmt.setString(1, id);
stmt.setString(2,name);
stmt.setString(3,fromdate);
stmt.setString(4,todate);
stmt.setString(5,project);
stmt.setString(6,reports);
stmt.setString(7, activity);
stmt.setString(8,mon);
stmt.setString(9,tue);
stmt.setString(10,wed);
stmt.setString(11, thur);
stmt.setString(12, fri);
stmt.setString(13,sat);
stmt.setString(14,sun);
stmt.executeUpdate();
System.out.println("inserted successfully");
response.sendRedirect("success.jsp");
}
catch(Exception e)
{
System.out.println(e);
response.sendRedirect("error.jsp");
}
} else if (request.getParameter("save") != null) {
// Invoke SecondServlet's job here.
response.setContentType("text/html");
String id=request.getParameter("eid");
String name=request.getParameter("ename");
String fromdate=request.getParameter("fromdate");
String todate=request.getParameter("todate");
String project=request.getParameter("project");
String reports=request.getParameter("reports");
String activity=request.getParameter("activity");
String mon=request.getParameter("mon");
String tue=request.getParameter("tue");
String wed=request.getParameter("wed");
String thur=request.getParameter("thur");
String fri=request.getParameter("fri");
String sat=request.getParameter("sat");
String sun=request.getParameter("sun");
String msg=null;
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/timeline","root", "root");
String sql="insert into partialentered(id,name,fromdate,todate,project,reports,activity,mon,tue,wed,thur,fri,sat,sun)value('"+id+"','"+name+"','"+fromdate+"','"+todate+"','"+project+"','"+reports+"','"+activity+"','"+mon+"','"+tue+"','"+wed+"','"+thur+"','"+fri+"','"+sat+"','"+sun+"')";
Statement stmt=con.createStatement();
int rs=stmt.executeUpdate(sql);
System.out.println("inserted successfully");
}
catch(Exception e)
{
System.out.println(e);
}
}
}
}
在提交表单时它告诉插入成功,但它只存储 1 行详细信息。请帮助我如何更改此 servlet 代码,以便我可以将动态添加行值也插入到数据库中。
提前致谢。
U 可以使用 jfiddle 查看输出:http://jsfiddle.net/UnuaX/ 当我使用添加行按钮并将值插入新添加的行时,它不会将这些详细信息插入数据库。
【问题讨论】:
-
代码太长。摆弄一下吧。
标签: javascript jsp servlets jdbc