4

我有一个动态 HTML 表,允许用户在单击按钮时添加行。每行的数据都需要插入到我使用 PHP 脚本的 MySQL 表中。现在由于每次HTML表格中的行数可能不同,我该如何在PHP中处理这个问题。一种方法是计算 HTML 表中的行数(我发现某处可以像这样完成)

$rows = $table->find('#studenttable'); /*line 4 of my code*/
$count = count($rows);                 /*studenttable is the id of my table*/
echo $count;

然后运行一个for循环为每一行插入数据。但这是一个致命的错误。

Notice: Undefined variable: table in savedata.php on line 4

Fatal error: Call to a member function find() on a non-object in savedata.php on line 4

另一种方式可能是使用 foreach 循环,我完全不知道如何在这种情况下实现。

此代码动态添加新行

var count=2;

function addRow()
{


var table=document.getElementById("studenttable");
var row=table.insertRow(-1);
var cell15=row.insertCell(14);

var ipt8 = document.createElement('input');
    ipt8.setAttribute("type", "hidden");
    ipt8.name = "htmlrow[]";      
    ipt8.value = count;        
    cell15.appendChild(ipt8);
count++;
}

PHP文件获取行数

<?php
$arr = $_POST['htmlrow'];
foreach ($arr as $val) {
   $count= $val;
echo $count;

}
?>

仍然没有得到结果。

4

2 回答 2

1

您不能直接访问 PHP 中的 HTML 元素。

我的建议是更改客户端代码,以便每当将一行添加到表中时,<input type="hidden" value="value-of-that-row" name="htmlrow[]"/>就会将一个添加到表单中。

这样,当提交表单时(您已经将整个内容包裹在表单中,对吗?),您可以使用 访问在处理表单的 PHP 中生成的表行,该行$_POST['htmlrow']现在将包含一个用户数据数组。

于 2013-07-05T23:47:42.793 回答
0

在 table.php 中

<script>
function addRow()
{
    var table = document.getElementById("studentsTable");
    var row = table.insertRow(-1);
    var cell = row.insertCell(0);
    //get the current count of rows
    //-1 for the head row another -1 to index from 0
    var last_row_index = table.getElementsByTagName("tr").length-2; 

    cell.innerHTML = '<input name="name_'+ last_row_index +'" type="text" />';
}

<body>

<form action="update.php" method="post">
    <table id="studentsTable">
    <tr>
        <th>Name</th>
    </tr>
    <tr>
        <td><input name="name_0" type="text" /></td>
    </tr>
    </table>
    <input name="submit" type="submit" value="Submit" />
    <br>
</form>
<button onclick="addRow()">Add New Row</button>
</body>

在更新.php

<?php

foreach($_POST as $name => $value)
{
    if(substr($name, 0, 5) == 'name_')
    {
        echo $name .' : '. $value .'<br>' ;
    }
}

?>

输出将类似于:

name_0:简

name_1:鲍勃

name_2:山姆

.

.

与用户在 table.php 中添加的一样多

你当然可以把它们放在一个数组中,插入到 MySQL 中……等等。

于 2013-12-11T18:30:43.320 回答