我在动态添加输入字段的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);
以下是测试后电子邮件的发布方式 -
表格信息 项目:阵列 部门:数组 任务:数组 时间:阵列 评论:数组
那么我做错了什么?谢谢!
答案 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 }