Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]2 formularze emailowe na jednej stronie
Forum PHP.pl > Forum > Przedszkole
chmielu_w
Witam,
Mam taki temat:
mam jedną podstronę, na której wstawiłem proste 2 osobne formularze do wysyłania maila. Różnią się drobnymi szczegółami typu inna nazwa pól formularza itp.
Problem w tym, że którykolwiek formularz wypełnię i wyślę to tak jakby się uruchamiały oba i dostaję 2 emaile naraz no i przy obu formularzach wyświetla się ten sam napis "twoja wiadomość została wysłana".
Podejrzewam, że to jakaś nieskomplikowana rzecz, żeby to rozdzielić. Ale totalnie nie znam się na PHP i nie mam pojęcia jak tego dokonać.

Poniżej podaję cały kod (bez stylów css) z mojej strony. Jakie poprawki w nim nanieść abym mógł wstawić go obok tego poniżej i aby oba się nie dublowały?

<form action="<?=$PHP_SELF; ?>" method="post">
- Imię i Nazwisko<br><input name="name" type="text"/><br>
- Twój e-mail<br><input name="email" type="text"/><br>
- Dotyczy<br><input value="Windows 7" name="subject" type="text"/><br>
- Treść zapytania<br><textarea name="message" rows="12"/></textarea><br>
<input type="submit" name="submit" value="Wyślij zapytanie" />
<input type="hidden" name="do" value="send"/>
<input type="reset" name="reset" value="Skasuj"/>
</form>
<?PHP
$do = ($_POST['do']);
if($do == "send")
{
$recipient = "moj-email@wp.pl";
$subject = ($_POST['subject']);
$name = ($_POST['name']);
$email = ($_POST['email']);
$message = ($_POST['message']);
$formsend = mail("$recipient", "$subject", "$message", "From: $email ($name)\r\nReply-to:$email");
echo ("Twoja wiadomość została wysłana");
}
?>
s1518
Sprawdz czy przypadkiem nie masz tych samych wartosci w atrybutach przy:
  1. <input type="hidden" name="do" value="send"/>

Najlepiej podaj obydwa kody tak jak wklejasz i bedzie jasn co jest nie tak.
b4rt3kk
Jeśli to jest cały kod to ja tu tylko widzę 1 formularz.
chmielu_w
no fakt, podałem tu tylko jeden formularz. Ale docelowo są dwa: zapytanie i rezerwacja; na jednej podstronie.
Oba wysyłane są na tego samego maila i mają praktycznie te same pola do wypełnienia. Różnią się jedynie nazwami tych pól i tytułem przychodzącego maila.
Nie znam się wogóle na php, a jestem wielce uradowany, że wkleiłem stosunkowo tak nieskąplikowany kod, który mi po prostu zadziałał i wysyła maila ze strony smile.gif

Nie wiem tylko jak zrobić żeby oba formularze były od siebie niezależne. Może wystarczy zmienić w którymś miejscu jakąś literkę, cyferkę w jednym z nich. Nie mam pojęcia.
Poniżej wklejam faktyczny pełny kod do obu:



<!-- zapytanie zapytanie zapytanie zapytanie zapytanie zapytanie zapytanie zapytanie zapytanie zapytanie-->
<form action="<?=$PHP_SELF; ?>" method="post">
Imię i Nazwisko<input name="name" type="text" style="width: 400px;"/><br>
Twój e-mail<input name="email" type="text" style="width: 400px;"/><br>
Pytanie dotyczy<input value="Audi A4 Quattro" name="subject" type="text" style="width: 400px;"/><br>
Treść zapytania<textarea name="message" rows="12" style="width: 400px;"/></textarea>
<br /><br />
<input type="submit" name="submit" value="Wyślij zapytanie" />
<input type="hidden" name="do" value="send"/>
<input type="reset" name="reset" value="Skasuj"/>
</form>
<?PHP
$do = ($_POST['do']);
if($do == "send")
{
$recipient = "moj-email@wp.pl";
$subject = ($_POST['subject']);
$name = ($_POST['name']);
$email = ($_POST['email']);
$message = ($_POST['message']);
$formsend = mail("$recipient", "$subject", "$message", "From: $email ($name)\r\nReply-to:$email");
echo ("Twoja wiadomość została wysłana");
}
?>

<br><Br><Br>

<!-- rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja -->
<form action="<?=$PHP_SELF; ?>" method="post">
Imię i Nazwisko<input name="name" type="text" style="400px;"/><br>
Twój e-mail<input name="email" type="text" style="width: 400px;"/><br>
Rezerwacja<input value="REZERWUJĘ - Audi A4 Quattro" name="subject" type="text" style="width: 400px;"/><br>
Uwagi<br><textarea name="message" rows="12" style="width: 400px;"/></textarea>
<br /><br />
<input type="submit" name="submit" value="Zarezerwuj" />
<input type="hidden" name="do" value="send"/>
<input type="reset" name="reset" value="Skasuj"/>
</form>
<?PHP
$do = ($_POST['do']);
if($do == "send")
{
$recipient = "moj-email@wp.pl";
$subject = ($_POST['subject']);
$name = ($_POST['name']);
$email = ($_POST['email']);
$message = ($_POST['message']);
$formsend = mail("$recipient", "$subject", "$message", "From: $email ($name)\r\nReply-to:$email");
echo ("Twoja Rezerwacja została wysłana");
}
?>
b4rt3kk
W pierwszym formularzu masz:

  1. <input type="hidden" name="do" value="send"/>


i w drugim tak samo:

  1. <input type="hidden" name="do" value="send"/>


Masz także dwa identyczne warunki:

  1. if($do == "send")


które są spełnione przy wysłaniu obojętnie którego formularza. Także wszystko wysyła się dwa razy.
chmielu_w
Ok, czyli mamy przyczynę. Czy w takim razie rozwiązaniem będzie zmiana wszystkich "do" np na "do1" w drugim formularzu?
tak jak poniżej:

<!-- rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja rezerwacja -->
<form action="<?=$PHP_SELF; ?>" method="post">
Imię i Nazwisko<input name="name" type="text" style="400px;"/><br>
Twój e-mail<input name="email" type="text" style="width: 400px;"/><br>
Rezerwacja<input value="REZERWUJĘ - Audi A4 Quattro" name="subject" type="text" style="width: 400px;"/><br>
Uwagi<br><textarea name="message" rows="12" style="width: 400px;"/></textarea>
<br /><br />
<input type="submit" name="submit" value="Zarezerwuj" />
<input type="hidden" name="do1" value="send"/>
<input type="reset" name="reset" value="Skasuj"/>
</form>
<?PHP
$do1 = ($_POST['do1']);
if($do1 == "send")
{
$recipient = "moj-email@wp.pl";
$subject = ($_POST['subject']);
$name = ($_POST['name']);
$email = ($_POST['email']);
$message = ($_POST['message']);
$formsend = mail("$recipient", "$subject", "$message", "From: $email ($name)\r\nReply-to:$email");
echo ("Twoja Rezerwacja została wysłana");
}
?>
b4rt3kk
Tak, to załatwi sprawę, ale jeśli przerobiłeś i przetestowałeś kod to już zapewne sam to wiesz. smile.gif
chmielu_w
Dzięki, wszystko gra!

Takie proste, a tak cieszy smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.