2013-02-04 34 views
0

我有一个简单的表单创建,它允许用户添加和删除行,他们选择。在用户确定要添加和填充表单的行数后,在提交后,我想发布数据以便我可以使用.php脚本将数据上载到服务器上。将HTML表单数据发布到php(调试)

我测试了添加和删除行的功能。当我点击提交按钮时,它会将我重定向到upload.php,但在该页面上,我看到一个错误:“未定义索引:奖励”,这让我认为数据没有正确发送。

下面我的实现有问题吗?

HTML

<button onclick="addRow();">Add Row</button> 
<form method="post" action="upload.php"> 
    <table border="1" id="optionsTable"> 
     <tr> 
     <td>Header1</td> 
     <td>Header2</td> 
     <td>Delete</td> 
     </tr> 

     <tr id="templateRow" style="display:none"> 
     <td><input type="text" id="reward" /></td> 
     <td><input type="text" id="duration" /></td> 
    <td><input type="button" id="deleteOption" value="Delete"  onclick="delRow(this)"/></td> 
     </tr> 
    </table> 

    <input type="submit" value="Submit" /> 
</form> 

</body> 
</html> 

<script> 
var maxID = 0; 
function getTemplateRow() { 
    var x = document.getElementById("templateRow").cloneNode(true); 
    x.id = ""; 
    x.style.display = ""; 
    x.innerHTML = x.innerHTML.replace(/{id}/, ++maxID); 
    return x; 
} 
function addRow() { 
    var t = document.getElementById("optionsTable"); 
    var rows = t.getElementsByTagName("tr"); 
    var r = rows[rows.length - 1]; 
    r.parentNode.insertBefore(getTemplateRow(), r); 
} 
function delRow(row) { 
    var i=row.parentNode.parentNode.rowIndex; 
    document.getElementById('optionsTable').deleteRow(i); 
} 

</script> 

我只有调试与upload.php的现在所以只需要一个命令有: 回波($ _ POST [ '奖励']);

任何帮助将不胜感激。

回答

3

您需要输入定义名称。

<input type="text" id="reward" /> 

TO

<input type="text" id="reward" name="reward"/> 
+0

您好,感谢您的帮助!我改变了你的建议,似乎有所帮助; .php正确执行。但是,$ _POST ['奖励']似乎是空的。我用命令 \t进行了测试if(empty($ _ POST ['reward'])){ \t \t echo“EMPTY”; \t} 似乎数据没有正确发送。有任何想法吗? – Chimi

+0

@Chimi,它显示你为空,因为你设置了style =“display:none”。删除它,然后尝试也许它会帮助你解决你的问题。 –

+0

谢谢。这部分解决了这个问题,但是当我回应时,我只得到最后一个结果而不是所有结果。有没有一种方法,我可以把它作为一个值的数组? – Chimi

3

输入需要属性name。例如: -

<input type="text" id="reward" name="reward" />