[英]Php contact form with multiable radio buttons
我對php很陌生,我正在嘗試編寫聯系表格/問卷
例如,我需要表格來查看單選按鈕的結果
EmployeeName:Ian Matthews Mark :(他們單擊過的單選按鈕)注釋:他們在文本框中留下的注釋。
但是如果填寫了其他名稱,請使用上述詳細信息創建新行
EmployeeName:Ian Matthews Mark :(他們單擊過的單選按鈕)注釋:他們在文本框中留下的注釋。
EmployeeName:Ciara Maguire標記:(他們單擊過的單選按鈕)注釋:他們在文本框中留下的注釋。
我正在嘗試使用“ foreach”,但我認為我沒有正確使用它
希望有人能幫忙
謝謝
目前我有這個代碼
<?php $EmailFrom = ""; $EmailTo = ""; $Subject = "Questionnaire"; $EmpName = Trim(stripslashes($_POST['EmployeeName'])); $Radio = Trim(stripslashes($_POST['Radio'])); $Comment = Trim(stripslashes($_POST['Com'])); foreach ($_POST ['Radio'] as $value) { $Body = "$EmpName, $Radio, $Comment\\n"; } $success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); if ($success){ print "top work"; } else{ print "you have a error"; } ?>
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td> </td> <td> <h4>Excellent</h4> </td> <td> <h4>Very Good</h4> </td> <td> <h4>Good</h4> </td> <td> <h4>Satisfactory</h4> </td> <td> <h4>Poor</h4> </td> <td> <h4>N/A</h4> </td> </tr> <tr> <td height="30"> <label>Ian Matthews <input type="hidden" name="EmployeeName" value="Ian Matthews" /> </label> </td> <td align="center"> <input type="radio" name="Radio" value="10-Excellent" /> </td> <td align="center"> <input type="radio" name="Radio" value="7-VeryGood" /> </td> <td align="center"> <input type="radio" name="Radio" value="4-Good" /> </td> <td align="center"> <input type="radio" name="Radio" value="0-Satisfactory" /> </td> <td align="center"> <input type="radio" name="Radio" value="-5-Poor" /> </td> <td align="center"> <input type="radio" name="Radio" value="N/A" /> </td> </tr> <tr> <td height="30"> <label class="colourGrey">Comments:</label> </td> <td colspan="6" align="center"> <input class="teamCom" type="text" name="Com" /> </td> </tr> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td colspan="7" class="BorderLine"></td> </tr> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td> </td> <td> <h4>Excellent</h4> </td> <td> <h4>Very Good</h4> </td> <td> <h4>Good</h4> </td> <td> <h4>Satisfactory</h4> </td> <td> <h4>Poor</h4> </td> <td> <h4>N/A</h4> </td> </tr> <tr> <td height="30"> <label>Ciara Maguire <input type="hidden" name="EmployeeName" value="Ciara Maguire" /> </label> </td> <td align="center"> <input type="radio" name="Radio" value="10-Excellent" /> </td> <td align="center"> <input type="radio" name="Radio" value="7-VeryGood" /> </td> <td align="center"> <input type="radio" name="Radio" value="4-Good" /> </td> <td align="center"> <input type="radio" name="Radio" value="0-Satisfactory" /> </td> <td align="center"> <input type="radio" name="Radio" value="-5-Poor" /> </td> <td align="center"> <input type="radio" name="Radio" value="N/A" /> </td> </tr> <tr> <td height="30"> <label class="colourGrey">Comments:</label> </td> <td colspan="6" align="center"> <input class="teamCom" type="text" name="Com" /> </td> </tr> <tr> <td height="10" colspan="7"></td> </tr> <tr> <td colspan="7" class="BorderLine"></td> </tr> </table>
首先,兩個員工都使用相同的輸入名稱。 您必須設置不同的名稱:
<input type="hidden" name="EmployeeName1" value="Ian Matthews" />
<input type="hidden" name="EmployeeName2" value="Ciara Maguire" />
並帶有所有輸入(Com1和Com2,radio1和radio2,..)
在您的php文件中,您必須執行以下操作
$Body = "";
$numEmployees = 2; // or the number you put
// Each iteration per employee, accesing to his form data
for ($i=1; $i<=$numEmployees; $i++)
{
$EmpName = Trim(stripslashes($_POST['EmployeeName' .$i]));
$Comment = Trim(stripslashes($_POST['Com' .$i]));
$Radio = Trim(stripslashes($_POST['radio' .$i]));
$Body .= "$EmpName, $Radio, $Comment\n"; // Note the dot in ".="
}
接着
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
當然,您的emailto和emailfrom為空,但我認為您將其填寫在最終版本中。 我沒有執行此版本,但希望可以幫助您了解您的錯誤。
$_POST['Radio']
包含一個值,而您想通過多個值發送。 為此,最好的方法是將輸入分配給數組,如下所示:
<input name="Radio[]" value="Lorem" />
<input name="Radio[]" value="ipsum" />
<input name="Radio[]" value="dolor" />
<input name="Radio[]" value="sit" />
<input name="Radio[]" value="amet" />
然后,您可以通過以數組形式訪問它們來檢索結果:
$_POST['Radio'][0] == 'Lorem'
$_POST['Radio'][4] == 'amet'
最后,您每次在循環中都會覆蓋對$ Body的分配。 而不是$Body = "$EmpName, $Radio, $Comment\\n";
,您將需要$Body .= "$EmpName, $Radio, $Comment\\n";
。 注意等號前面的點。 那附加到變量而不是覆蓋它。
假設除了每個POST的許多單選按鈕響應外,您只有一名員工提交一條評論,那么您可以使用類似以下內容的方法:
foreach ($_POST ['Radio'] as $value) {
$Body .= "$EmpName, $value, $Comment\n";
}
希望這可以幫助!
我這樣修改了您的代碼-
<form method="post" >
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="10" colspan="7"></td>
</tr>
<tr>
<td> </td>
<td>
<h4>Excellent</h4>
</td>
<td>
<h4>Very Good</h4>
</td>
<td>
<h4>Good</h4>
</td>
<td>
<h4>Satisfactory</h4>
</td>
<td>
<h4>Poor</h4>
</td>
<td>
<h4>N/A</h4>
</td>
</tr>
<tr>
<td height="30">
<label>Ian Matthews
<input type="hidden" name="EmployeeName1" value="Ian Matthews" />
</label>
</td>
<td align="center">
<input type="radio" name="Radio1" value="10-Excellent" />
</td>
<td align="center">
<input type="radio" name="Radio1" value="7-VeryGood" />
</td>
<td align="center">
<input type="radio" name="Radio1" value="4-Good" />
</td>
<td align="center">
<input type="radio" name="Radio1" value="0-Satisfactory" />
</td>
<td align="center">
<input type="radio" name="Radio1" value="-5-Poor" />
</td>
<td align="center">
<input type="radio" name="Radio1" value="N/A" />
</td>
</tr>
<tr>
<td height="30">
<label class="colourGrey">Comments:</label>
</td>
<td colspan="6" align="center">
<input class="teamCom" type="text" name="Com1" />
</td>
</tr>
<tr>
<td height="10" colspan="7"></td>
</tr>
<tr>
<td colspan="7" class="BorderLine"></td>
</tr>
<tr>
<td height="10" colspan="7"></td>
</tr>
<tr>
<td> </td>
<td>
<h4>Excellent</h4>
</td>
<td>
<h4>Very Good</h4>
</td>
<td>
<h4>Good</h4>
</td>
<td>
<h4>Satisfactory</h4>
</td>
<td>
<h4>Poor</h4>
</td>
<td>
<h4>N/A</h4>
</td>
</tr>
<tr>
<td height="30">
<label>Ciara Maguire
<input type="hidden" name="EmployeeName2" value="Ciara Maguire" />
</label>
</td>
<td align="center">
<input type="radio" name="Radio2" value="10-Excellent" />
</td>
<td align="center">
<input type="radio" name="Radio2" value="7-VeryGood" />
</td>
<td align="center">
<input type="radio" name="Radio2" value="4-Good" />
</td>
<td align="center">
<input type="radio" name="Radio2" value="0-Satisfactory" />
</td>
<td align="center">
<input type="radio" name="Radio2" value="-5-Poor" />
</td>
<td align="center">
<input type="radio" name="Radio2" value="N/A" />
</td>
</tr>
<tr>
<td height="30">
<label class="colourGrey">Comments:</label>
</td>
<td colspan="6" align="center">
<input class="teamCom" type="text" name="Com2" />
</td>
</tr>
<tr>
<td height="10" colspan="7"></td>
</tr>
<tr>
<td colspan="7" class="BorderLine"></td>
</tr>
</table>
<input type="submit" value="Send Feedback" />
</form>
<?php
if(isset($_POST)) {
$EmailFrom = "";
$EmailTo = "";
$Subject = "Questionnaire";
$Body = "";
$noParaPerEmployee = 3;
$n = 0;
foreach ($_POST as $key=> $value) {
//echo "$key => $value <br/>";
//$Body .= "$EmpName, $Radio, $Comment\n";
$Body .= "$value , ";
$n++;
if($n===3) {
$Body = substr($Body,0, -2); // get rid of last comma..
$Body .= "\n";
$n = 0;
}
}
//echo "$Body <br/>\n";
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
if ($success){
print "top work";
}
else{
print "you have a error";
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.