2013-04-29 100 views
0

我在動態添加輸入字段的PHP表單處理時遇到問題。動態添加輸入字段的PHP表單處理

我正在測試的JavaScript和HTML代碼可以在http://jsfiddle.net/wd5y9/找到。顯然,這部分工作就像一個魅力。

這是我的PHP代碼 -

$emailSubject = 'Test Form'; 
$mailto = '[email protected]'; 

$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: [email protected]\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$success = mail($mailto, $emailSubject, $body, $headers); 

這裏是電子郵件的測試後,如何來通過 -

表單信息 項目:陣列 部:陣列 任務:數組 時間: Array 評論:Array

那麼我在做什麼錯了?謝謝!

回答

0

您可能已經發布了數組。所以,你需要的,如果您發佈$ _ POST(print_r($_POST))的print_r的,我們將能夠幫助你更要像做

$project = $_POST['project']['somethingHere']; 

編輯

從您的評論我看到你有兩個項目,各部門,留言等等

因此,爲了使你的代碼工作它應該是一個循環。

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> 
} 
+0

好,這裏是的print_r返回什麼: 陣列([項目] =>陣列([0] => [1] =>)[部門] =>陣列([0 ] => [1] =>)[task] => Array([0] => [1] =>)[hours] => Array([0] => 3 [1] => 4) => Array([0] => t est1 [1] => test2)[submit] =>提交表格) – Jennifer 2013-04-29 15:53:18

+0

添加'for($ i = 0; $ I <=計數值($ POST [ '項目']); $ i ++)'導致出現以下錯誤 解析錯誤:語法錯誤,意外的T_ENCAPSED_AND_WHITESPACE,期望T_STRING或T_VARIABLE或T_NUM_STRING在...在第23行。也許我把它複製錯了? – Jennifer 2013-04-29 20:44:55

+0

@Jennifer我不好意思忘了$​​ _POST。請再試一次。 – idipous 2013-04-30 06:41:43

0

你有多行(假設他們生成)張貼到具有相同名稱的服務器,所以值實際上這些值的數組。

所以要訪問的第一個項目,你只是訪問$項目數組的第一個值:

$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 } 
相關問題