我有一个html表单,其中包含一个文本输入表,最终用于生成SQL INSERT查询。我遇到的问题是我的手动输入表有5个文本输入,然后我给了用户添加更多的选项。这些额外的输入字段创建得很好,当我在添加它们后检查页面上的元素时,它们具有正确的名称,ID,类型等。(尝试发布屏幕截图以提供更好的想法,但我是新用户,所以不能 - 任何方式围绕这个?!)
问题是当我点击表单的提交按钮时,只会发布前5个文本(我使用html标签手动输入的文本)。这是因为它在生成新输入之前读取数据吗?我觉得这不应该是因为我正在使用if(isset($ _ POST ['save'])){其中'save'是我的最终提交按钮。
我在html中得到的表格如下(道歉布局不当/语法杂乱,但在这个意义上它的工作正常):
编辑:我在一个表单中有两个表;这没关系吗?即:
<form action='createtable.php' method='post' border='0'>
<table>
<tr>
<td><input type="button" value="Add column" onclick="addRowToTable();" /></td>
<td><input class='strong' type='submit' value='Create Table' name='save' /></td>
</tr>
</table>
<table name='columnnames' id='columnnames' border='0'>
<tr> <!--start table row 1-->
<td>Column 1:</td> <!--first item in row is just text-->
<td><input type='text' name='col1' id='col1' /></td> <!--second item in row is input text box-->
</tr> <!--end table row-->
<tr> <!--start table row 2-->
<td>Column 2:</td>
<td><input type='text' name='col2' id='col2' /></td>
</tr> <!--end table row-->
<tr> <!--start table row 3-->
<td>Column 3:</td>
<td><input type='text' name='col3' id='col3' /></td>
</tr> <!--end table row-->
<tr> <!--start table row 4-->
<td>Column 4:</td>
<td><input type='text' name='col4' id='col4' /></td>
</tr> <!--end table row-->
<tr> <!--start table row 5-->
<td>Column 5:</td>
<td><input type='text' name='col5' id='col5' /></td>
</tr> <!--end table row-->
</table>
</form>
我用来添加表行的JavaScript如下:
<script>
function addRowToTable()
{
//get table
var tbl = document.getElementById('columnnames');
//find length
var numberRows = tbl.rows.length;
// as there's no header row in the table, then iteration = numberRows + 1
var rowNumber = numberRows + 1;
var row = tbl.insertRow(numberRows);
// left cell
var cellLeft = row.insertCell(0);
var textBox = document.createTextNode('Column ' + rowNumber + ':');
cellLeft.appendChild(textBox);
// right cell
var cellRight = row.insertCell(1);
var el = document.createElement('input');
el.type = 'text';
el.name = 'col' + rowNumber;
el.id = 'col' + rowNumber;
//el.onkeypress = keyPressTest;
cellRight.appendChild(el);
}
</script>
我已经看到一些与JS生成的表格有关的问题,不想使用$ _POST正确提交,但这些答案看起来相当小,并且想知道是否有人可以提供帮助,因为我一直试图读取数据小时。非常感谢!
答案 0 :(得分:1)
您是否检查过您的表格标签是否写得正确? (你应该把它包含在你的问题中:o))
<form method=POST action="myURL">
[...]
</form>
答案 1 :(得分:1)
虽然这是一个非常古老的问题,但我正在写答案以防其他人再次通过它。
PHP代码没有使用jquery从新添加的输入字段中获取值,因为它们都具有相同的名称属性。对于这些类型的动态输入字段,您需要将名称设置为数组<input type="text" name "text[]">
。当您编写$text= $_POST['text']
时,文本变量将存储名为text[]
的输入字段中的所有值,并以数组的形式存储它们。
希望它有所帮助。 :)