我有一个动态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;
}
?>
仍然没有得到结果。
答案 0 :(得分:1)
您无法直接访问PHP中的HTML元素。
我的建议是更改客户端代码,以便每当有一行添加到表中时,<input type="hidden" value="value-of-that-row" name="htmlrow[]"/>
都会添加到表单中。
这样,在提交表单时(你将整个事物包装在一个表单中,对吗?)你可以使用$_POST['htmlrow']
访问处理表单的PHP中生成的表行,现在它将包含一个数组用户数据。
答案 1 :(得分:0)
<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>
在update.php中
<?php
foreach($_POST as $name => $value)
{
if(substr($name, 0, 5) == 'name_')
{
echo $name .' : '. $value .'<br>' ;
}
}
?>
输出类似于:
name_0:简
name_1:Bob
name_2:Sam
尽可能多的用户在table.php中添加
你当然可以把它们放在一个数组中,插入MySQL ......等等。