2013-01-23 158 views
1

您好我正在一个PHP表单,它必须添加一个表格行,当添加按钮被按下时,我正在使用for循环来保存值问题是它没有保存这里的数据到我的数据库,并给出了我的文本框的环值是不确定的错误 谁能帮助我 是我的脚本将动态添加行的值添加到数据库

<?php 
session_start(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<script language="javascript" type="text/javascript"> 
var i=1; 
function addRow() 
{ 
      var tbl = document.getElementById('table1'); 
      var lastRow = tbl.rows.length; 
      var iteration = lastRow - 1; 
      var row = tbl.insertRow(lastRow); 

      var firstCell = row.insertCell(0); 
      var el = document.createElement('input'); 
      el.type = 'text'; 
      el.name = 'name' + i; 
      el.id = 'name' + i; 
      el.size = 20; 
      el.maxlength = 20; 
      firstCell.appendChild(el); 

      var secondCell = row.insertCell(1); 
      var el2 = document.createElement('input'); 
      el2.type = 'text'; 
      el2.name = 'address' + i; 
      el2.id = 'address' + i; 
      el2.size = 20; 
      el2.maxlength = 20; 
      secondCell.appendChild(el2); 

      var thirdCell = row.insertCell(2); 
      var el3 = document.createElement('input'); 
      el3.type = 'text'; 
      el3.name = 'contactNum' + i; 
      el3.id = 'contactNum' + i; 
      el3.size = 20; 
      el3.maxlength = 20; 
      thirdCell.appendChild(el3); 
      alert(i); 
      i++; 
      frm.h.value=i; 
      alert(i); 

} 
</script> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title></head> 

<body> 
<form action="submit.php" method="post" name="frm" id="frm"> 
<table width="40%" border="2" cellpadding="0" cellspacing="0" id="table1"> 
    <tr> 
    <td><strong>Name</strong></td> 
    <td><strong>Address</strong> </td> 
    <td><strong>Contact Num</strong> </td> 
    </tr> 
    <tr> 
    <td><input name="name" type="text" id="name" size="20" maxlength="20" /></td> 
    <td><input name="address" type="text" id="address" size="20" maxlength="20" /></td> 
    <td><input name="contactNum" type="text" id="contactNum" size="20" maxlength="12" /></td> 
    </tr> 

</table> 
<input type="button" value="Add" onclick="addRow();" /> 
<input name="Submit" type="submit" value="Submit" /> 
<label> 
<input name="h" type="hidden" id="h" value="0" /> 
</label> 
</form> 
</body> 
</html> 

hereis我submit.php代码

<?php 
mysql_connect("localhost", "root", '')or die(mysql_error()); 
mysql_select_db("test") or die(mysql_error()); 
$num = $_POST['h']; 
for($i=0;$i<=$num;$i++) 
{ 

     $name  = $_POST["name_$i"]; 
     $address = $_POST["address_$i"]; 
     $contactNum = $_POST["contactNum_$i"]; 

mysql_query("INSERT INTO `com`(`name`, `add`, contact) Values('$name', '$address', '$contactNum')") or die(mysql_error()); 
} 
echo "<h1>Done!</h1>"; 

?> 
+1

你应该停止使用php的旧mysql扩展。使用PDO或mysqli代替,否则您的代码容易受到多重安全问题的影响。哦,也不要使用该数据库内的root帐户或普通任务。特别是没有密码... – arkascha

+0

我只是一个初学者,所以我只是知道MySQL所以你可以帮我解决我的问题与MySQL – john

+0

那么,首先你访问错误的POST变量。你的脚本命名你的html输入字段,如'name15',_whithout _一个'_'。其次,对这些变量使用数组符号通常会更好。所以像''地址['+ i +']''。您可以更容易地访问POST变量。 – arkascha

回答

0

下面的代码将解决您的问题,并在数据库中插入数据。

<script language="javascript" type="text/javascript"> 
var i=1; 
function addRow() 
{ 
     var tbl = document.getElementById('table1'); 
     var lastRow = tbl.rows.length; 
     var iteration = lastRow - 1; 
     var row = tbl.insertRow(lastRow); 

     var firstCell = row.insertCell(0); 
     var el = document.createElement('input'); 
     el.type = 'text'; 
     el.name = 'name_' + i; 
     el.id = 'name_' + i; 
     el.size = 20; 
     el.maxlength = 20; 
     firstCell.appendChild(el); 

     var secondCell = row.insertCell(1); 
     var el2 = document.createElement('input'); 
     el2.type = 'text'; 
     el2.name = 'address_' + i; 
     el2.id = 'address_' + i; 
     el2.size = 20; 
     el2.maxlength = 20; 
     secondCell.appendChild(el2); 

     var thirdCell = row.insertCell(2); 
     var el3 = document.createElement('input'); 
     el3.type = 'text'; 
     el3.name = 'contactNum_' + i; 
     el3.id = 'contactNum_' + i; 
     el3.size = 20; 
     el3.maxlength = 20; 
     thirdCell.appendChild(el3); 
    // alert(i); 
     i++; 
     frm.h.value=i; 
    // alert(i); 
} 
</script> 

在化妆变化在根据下面:

<tr> 
    <td><input name="name_0" type="text" id="name_0" size="20" maxlength="20" /></td> 
    <td><input name="address_0" type="text" id="address_0" size="20" maxlength="20" /></td> 
    <td><input name="contactNum_0" type="text" id="contactNum_0" size="20" maxlength="12" /></td> 
</tr> 

在submit.php作出变化像的下方。

for($i=0;$i<$num;$i++) 
+0

谢谢工作完美 – john

2

看样子你正在增加“我”多次。

 i++; 
     frm.h.value=i; 

应该

 frm.h.value=i; 
     i++ 

,或者你可以调整为循环:

 for($i=0; $i < $num; $i++) 
0

文本框的值是不确定的 - 在PHP,您找谁名_ $ I(同“_”),在javascript中名称没有“_”(el.name ='name'+ i;)

另请注意,在您的javascript y我们的循环从1开始( - 在你的php中)。第一个客户端行是从HTML来的,但你没有放置任何索引(name =“name”而不是name =“name_0”)。最好甚至不要用任何行填充表格,只需在加载页面时调用函数(使用i = 0)即可。