0

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

我想使用 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

4 回答 4

0

您必须唯一标识每一行(ID0、EMAIL0 等)。这在通过 PHP 或脚本构建表时很容易完成。然后在你的 PHP 表单代码中,你在 $_GET 上做一个 foreach 并阅读每个。你现在拥有它的方式,每个后续的 ID、EMAIL 等都覆盖了前一个。

于 2012-04-19T14:16:04.777 回答
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>
于 2012-04-19T14:18:28.390 回答
0

与其直接访问您的行,不如先获取您的表格,然后再获取行。

var table = document.getElementById('myTable');
for (i=1; i < table.rows.length; i++) {
    var row = table.rows(i);
}
于 2012-04-19T14:21:09.213 回答
0

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

 <tr id="row"> 

然后是函数:

document.getElementById("row")

将只考虑其中的最后一个(这取决于浏览器)。

要真正确定您将真正获得您必须为它们提供不同 ID 的所有元素。喜欢

<tr id="row1">...
...
<tr id="row2">...
...
<tr id="row3">...
...

祝你好运!

于 2012-04-19T14:30:41.700 回答