用于动态添加输入字段的PHP表单处理

时间:2013-04-29 15:39:35

标签: php jquery arrays forms

我在动态添加输入字段的PHP表单处理方面遇到了问题。

我正在测试的JavaScript和HTML代码可以在http://jsfiddle.net/wd5y9/找到。显然,这部分就像一个魅力。

这是我的PHP代码 -

$emailSubject = 'Test Form';
$mailto = 'xxx@xxx.com';

$project = $_POST['project'];
$department = $_POST['department'];
$task = $_POST['task'];
$hours = $_POST['hours'];
$comment = $_POST['comment'];

date_default_timezone_set('America/Chicago');
$date = date('l F j, Y g:ia T');

$body = <<<EOD

<h2>Form Information</h2>
<table>
<tr>
<td><strong>Project</strong>: $project<br /></td>
<td><strong>Department</strong>: $department<br /></td>
<td><strong>Task</strong>: $task<br /></td>
<td><strong>Hours</strong>: $hours<br /></td>
<td><strong>Comment</strong>: $comment<br /></td>
</tr>
</table>

<p>Form submitted $date.</p>

EOD;

$headers = "From: xxx@xxx.com\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$success = mail($mailto, $emailSubject, $body, $headers); 

以下是测试后电子邮件的发布方式 -

表格信息 项目:阵列     部门:数组     任务:数组     时间:阵列     评论:数组

那么我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:0)

您可能已发布数组。所以你需要做一些像

这样的事情
$project = $_POST['project']['somethingHere'];

如果您发布$ _POST(print_r($_POST))的print_r,我们将能够为您提供更多帮助。

修改

从您的评论中我看到您有两个项目,部门,评论等。

因此,为了让您的代码正常工作,它应该是一个循环。

for($i=0; $i<=count($_POST['project']); $i++)
{
 <h2>Form Information</h2>
<table>
<tr>
<td><strong>Project</strong>: $project[$i]<br /></td>
<td><strong>Department</strong>: $department[$i]<br /></td>
<td><strong>Task</strong>: $task[$i]<br /></td>
<td><strong>Hours</strong>: $hours[$i]<br /></td>
<td><strong>Comment</strong>: $comment[$i]<br /></td>
</tr>
</table>
}

答案 1 :(得分:0)

您有多个行(假设它们生成它们)以相同的名称发布到您的服务器,因此这些值实际上是这些值的数组。

因此,要访问第一个项目,您只需访问$ project数组的第一个值:

$project = $_POST['project'];
$firstProject = $project[0];

或者更好的是,只需将它们全部循环以吐出电子邮件中的所有行,如下所示:

foreach ($project as $i => $thisProject) {
?>

<h2>Form Information</h2>
<table>
<tr>
<td><strong>Project</strong>: $project[$i]<br /></td>
<td><strong>Department</strong>: $department[$i]<br /></td>
<td><strong>Task</strong>: $task[$i]<br /></td>
<td><strong>Hours</strong>: $hours[$i]<br /></td>
<td><strong>Comment</strong>: $comment[$i]<br /></td>
</tr>
</table>

<?php }