我正在尝试从foreach循环中排除电子邮件代码,此时电子邮件成功消息显示3次。我尝试了不同的组合,但不能让它只显示一次......?
任何想法......?谢谢
if (isset($_POST['submit'])) {
$posted = $_POST;
$options = array('option-1' => __('Procedure: Suture Skin Wounds', 'appthemes'),
'option-2' => __('Procedure: Cat castration', 'appthemes'),
'option-3' => __('Procedure: Cat spay', 'appthemes')
);
foreach ($options as $option => $value) {
if ($posted[$option] == "selected") {
echo "<li class='error-list'>";
echo "Please select an answer for:" . " " . $value . " >
" . '<a href="' . get_permalink(30) . '">Back to form</a>';
echo "</li>";
}// if == "selected"
else/* if(isset($_POST['submit'])) */ {
$adminemail = get_option('admin_email');
$ToEmail = $adminemail;
$EmailSubject = 'Skills Assessment Form';
$mailheader = "From Leapfrog";
$mailheader .= "Reply-To: " . $_POST["email"] . "\r\n";
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Form:Small Animal\n";
$MESSAGE_BODY = "Name: " . $_POST["canname"] . "\n\n";
$MESSAGE_BODY .= "\n\n" . "Procedure: " . "Suture Skin Wounds: " . $_POST["option-1"];
$MESSAGE_BODY .= "\n\n" . "Procedure: " . "Cat castration: " . $_POST["option-2"];
$MESSAGE_BODY .= "\n\n" . "Procedure: " . "Cat spay: " . $_POST["option-3"];
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die("Failure");
echo "Your skills assessment form has been Sent:" . " " .
'<a href="' . get_permalink(13) . '">Back to your Dashboard</a>';
//echo '<a href="'.get_permalink(13).'">Dashboard</a>';
}//else
}//foreach loop;
}//if isset
答案 0 :(得分:1)
您正在foreach
循环中执行所有操作:显示错误,邮寄邮件并显示成功消息。
您需要将所有内容移出foreach
循环,例如在循环之前设置一个空的$errors
数组,并将所有错误消息添加到该数组中。
然后,在循环之后,您可以检查$errors
数组是否仍为空并邮寄并显示您的成功消息。如果没有,则显示所有错误。