将html表输入值添加到mysql数据库表

时间:2012-04-19 14:03:54

标签: javascript php mysql html-table

我已经广泛搜索了这个问题的答案,但找不到任何答案。

我想使用php和javascript将html表的内容添加到mysql数据库中,其中每一行都是一条新记录。

以下是表格示例:

<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col">ID</th>
    <th scope="col">NAME</th>
    <th scope="col">EMAIL</th>

  </tr>
  <tr id="row">
    <td><input name="ID" type="text" value="20" /></td>
    <td><input name="NAME" type="text" value="Peter" /></td>
    <td><input name="EMAIL" type="text" value="peter@gmail.com" /></td>
  </tr>
  <tr id="row">
    <td><input name="ID" type="text" value="21" /></td>
    <td><input name="NAME" type="text" value="Jhon" /></td>
    <td><input name="EMAIL" type="text" value="jhon@yahoo.com" /></td>
  </tr>
  <tr id="row">
    <td><input name="ID" type="text" value="22" /></td>
    <td><input name="NAME" type="text" value="Mike" /></td>
    <td><input name="EMAIL" type="text" value="mike@hotmail.com" /></td>
  </tr>
</table>

<input name="Btn" type="button" onclick="addRecords()" value="Add"/>
</form>

我尝试过的javascript示例:

<script>
function addRecords()
{
    var row = document.getElementById("row")


    for (x in row)
    {
        $.post="<? $insertSQL = sprintf("INSERT INTO accounts (acc_id, acc_name, acc_email) VALUES (%s, %s)",
                       GetSQLValueString($_POST['ID'], "integer"),
                       GetSQLValueString($_POST['NAME'], "text"),
                       GetSQLValueString($_POST['EMAIL'], "text"));

  mysql_select_db($database_G3CSAdminControlPanel, $G3CSAdminControlPanel);
  $Result1 = mysql_query($insertSQL, $G3CSAdminControlPanel) or die(mysql_error()); ?>"
    }
}

</script>

上面做了什么,它只将表中的最后一条记录添加到数据库中。 我猜我的问题是php代码,每个输入也应该放入一个数组,而不仅仅是行,不知道怎么做。

更新  我所展示的代码只是我想要做的一个例子。行的id必须保持不变,因为我正在使用一个脚本在我的实际网页中创建表。

基本上我想做以下事情,但在PHP中:

<script>
function addRecords()
{
    var row = document.getElementById("row");
    var n = 0;
    var q = 0;
    for (x in "row")
    {
        n++;
        var code = document.getElementsByName("ID")[q].value;
        var desc = document.getElementsByName("NAME")[q].value;
        var price = document.getElementsByName("EMAIL")[q].value;
        alert(code + ' ' + desc + ' ' + price);
        q++;
    }
    alert('There is ' + n + ' rows in the table');
}
</script>

脚本返回每行中输入的值。 我想在PHP中做类似的事情,但是要将每行输入中的值添加为数据库表中的记录。

因此,不应为每一行执行Javascript警报,而应执行PHP脚本以插入该行的记录。

4 个答案:

答案 0 :(得分:0)

您必须唯一标识每一行(ID0,EMAIL0等)。通过PHP或脚本构建表时,可以轻松完成此操作。然后在你的PHP表单代码中,你在$ _GET上做一个foreach并阅读每个。你现在拥有它的方式,每个后续ID,EMAIL等都是在写上一个ID。

答案 1 :(得分:0)

您要插入三个字段。每个都有很多。因此,您需要将输入字段的名称用作html数组。否则,在表单发布时,最后一个字段将覆盖之前的字段。

具体说说,编辑你的标记如下:

<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col">ID</th>
    <th scope="col">NAME</th>
    <th scope="col">EMAIL</th>
  </tr>
  <tr id="row1">
    <td><input name="ID[]" type="text" value="22" /></td>
    <td><input name="NAME[]" type="text" value="Mike" /></td>
    <td><input name="EMAIL[]" type="text" value="mike@hotmail.com" /></td>
  </tr>
  <tr id="row2">
    <td><input name="ID[]" type="text" value="22" /></td>
    <td><input name="NAME[]" type="text" value="Mike" /></td>
    <td><input name="EMAIL[]" type="text" value="mike@hotmail.com" /></td>
  </tr>
  <tr id="row3">
    <td><input name="ID[]" type="text" value="22" /></td>
    <td><input name="NAME[]" type="text" value="Mike" /></td>
    <td><input name="EMAIL[]" type="text" value="mike@hotmail.com" /></td>
  </tr>
</table>

答案 2 :(得分:0)

不是直接访问您的行,而是首先获取您的表,然后获取行。

var table = document.getElementById('myTable');
for (i=1; i < table.rows.length; i++) {
    var row = table.rows(i);
}

答案 3 :(得分:0)

如果您有多个具有相同ID的元素,例如:

 <tr id="row"> 

然后功能:

document.getElementById("row")

只会考虑最后一个(这取决于浏览器)。

要确定您将真正获得所有元素,以便为它们提供不同的ID。像

<tr id="row1">...
...
<tr id="row2">...
...
<tr id="row3">...
...
祝你好运!