У меня есть 12 форм на одной странице, каждая из которых должна быть отправлена туда.
После отправки информация должна быть отправлена мне по электронной почте. Я зацикливаюсь на PHP для создания форм для продуктов:
<?php foreach ($_productCollection as $_product): ?>
<form action="" method="post">
<p>
<textarea class="finalTextArea" name="message" id="textarea" placeholder="Motivering MAX 50 Tecken"></textarea>
</p>
<p>
<input type="text" class="finalText" name="name" id="textfield" placeholder="För och Efternamn">
</p>
<p>
<input type="text" class="finalText" name="email" id="textfield2" placeholder="E-mail">
</p>
<p>
<input type="submit" class="finalTextSubmit" name="submit" value="Rösta!">
</p>
</form>
и я пытаюсь отправить мне форму по электронной почте, используя этот код:
<?php
if(isset($_POST['submit'])){
$to = "[email protected]"; // this is your Email address
$from = $_POST['email']; // this is the sender's Email address
$first_name = $_POST['name'];
$subject = "Form submission";
$subject2 = "Copy of your form submission";
$message = $first_name . " " . " wrote the following:" . "\n\n". $_POST['message'];
$message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];
$headers = "From:" . $from;
$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
}?>
Он работает с первой формой, и когда он будет отправлен, он не будет работать вообще. Есть ли способ сделать это с AJAX или другим решением?
Если вы переключите имена всех ваших входов, чтобы закончить с []
как например name="message[]"
тогда вы сможете отправить несколько сообщений. Если вы решите сделать это, вы должны будете иметь все поля в одной форме. Что-то похожее на следующее (хотя учтите, что я не проверял это, так что это может содержать некоторые недостатки, это просто дать альтернативный способ решения проблемы):
<form action="" method="post">
<?php
foreach ($_productCollection as $_product){
?>
<p>
<textarea class="finalTextArea" name="message[]" id="textarea" placeholder="Motivering MAX 50 Tecken"></textarea>
</p>
<p>
<input type="text" class="finalText" name="name[]" id="textfield" placeholder="För och Efternamn">
</p>
<p>
<input type="text" class="finalText" name="email[]" id="textfield2" placeholder="E-mail">
</p>
<?php
}
?>
<p>
<input type="submit" class="finalTextSubmit" name="submit" value="Rösta!">
</p>
</form>
Теперь все параметры записи будут храниться в массивах, создавая несколько одинаковых значений.
Затем мы должны перебрать каждый из них и отправить письмо для каждого элемента в массиве.
<?php
if( $_SERVER['REQUEST_METHOD'] == "POST" ){
$i = 0;
foreach( $_POST['email'] AS $from ){
$to = "[email protected]";
$first_name = $_POST['name'][$i];
$subject = "Form submission";
$subject2 = "Copy of your form submission";
$message = $first_name . " " . " wrote the following:" . "\n\n". $_POST['message'][$i];
$message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'][$i];
$headers = "From:" . $from;
$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
$i++;
}
}
Других решений пока нет …