Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将html表输入值添加到mysql数据库表_Javascript_Php_Mysql_Html Table - Fatal编程技术网

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

Javascript 将html表输入值添加到mysql数据库表,javascript,php,mysql,html-table,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>

我到处寻找这个问题的答案,但没有找到

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

身份证件
名称
电子邮件
以及我尝试的javascript示例:

<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>
<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>

函数addRecords()
{
var row=document.getElementById(“行”)
用于(第x行)
{
$.post=“”
}
}
上面所做的只是将表中的最后一条记录添加到数据库中。 我猜我的问题在于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>

函数addRecords()
{
var行=document.getElementById(“行”);
var n=0;
var q=0;
对于(第行中的x)
{
n++;
var code=document.getElementsByName(“ID”)[q].value;
var desc=document.getElementsByName(“名称”)[q].value;
var price=document.getElementsByName(“电子邮件”)[q].value;
警报(代码+描述+价格);
q++;
}
警报('表中有'+n+'行');
}
脚本返回每行中输入的值。 我想在PHP中做一些类似的事情,但要将每行中的输入值作为记录添加到数据库表中


因此,它应该执行一个PHP脚本来插入该行的记录,而不是对每一行执行Javascript警报。

您必须唯一地标识每一行(ID0、EMAIL0等)。这在通过PHP或脚本构建表时很容易做到。然后在PHP表单代码中,对$\u GET执行foreach并读取每个。按照现在的方式,后续的每个ID、电子邮件等都会覆盖上一个。

您有三个字段要插入。每一种都有很多。因此,您需要使用输入字段的名称作为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>

身份证件
名称
电子邮件

与其直接访问行,不如先获取表,然后获取行

var table = document.getElementById('myTable');
for (i=1; i < table.rows.length; i++) {
    var row = table.rows(i);
}
var table=document.getElementById('myTable');
对于(i=1;i
如果您有多个具有相同id的元素,例如:

 <tr id="row"> 

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

为了确保您将真正获得所有元素,您必须为它们提供不同的ID。像

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

祝你好运

您研究过AJAX方法吗?或者JQuery?JS在客户机上运行,PHP在服务器上运行。你所尝试的不会起作用,句号。您需要使用AJAX或完整的往返传统表单提交系统。我现在意识到服务器端PHP不能与客户端JS混合使用。尝试在PHP中实现这一点,但PHP交互和返回html值/元素的方式并不像JS那样直截了当:/Thank,我花了一段时间研究了如何使用这些数组的代码,但还是成功了。而不是为每一行指定唯一的名称。我创建了一个隐藏字段,它的值通过javascript为每一行递增。然后使用该值循环所有数组值。