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>

这是我的 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>";

?>
4

3 回答 3

2

看来您将“i”增加了太多次。

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

应该

      frm.h.value=i;
      i++

或者您可以调整 for 循环:

     for($i=0; $i < $num; $i++)
于 2013-01-23T13:34:36.433 回答
0

文本框的值未定义 - 在 PHP 中,您正在寻找 name_$i(带有“_”),而在 javascript 中,名称没有“_”(el.name = 'name' + i;)

另请注意,在您的 javascript 中,您的循环从 1 开始(在您的 php 中)。第一个客户端行来自 HTML,但您没有放置任何索引(name="name" 而不是 name="name_0")。最好不要用任何行填充表格,而在页面加载时调用函数(i=0)。

于 2013-01-23T13:35:45.877 回答
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++)
于 2013-01-24T08:35:00.463 回答