Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP] formularz na mail dla kilku adresów
cybul7
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


Witam.
W temacie PHP dopiero raczkuje, mam następujący problem.
Robię formularz, który będzie działał jako jeden z artykułów w joomli.
Chodzi o formularz w którym odwiedzający wypełni sobie kilka pól + wybierze z checkboxa adresata maila, warunek jest taki, że może wybrać np 2 checkboxy, i wtedy mail musi dotrzeć do dwóch odbiorców.

Sam mechanizm wysyłania działa, ponieważ udało mi się wykonać wybór adresata za pomocą rozwijanej listy, ale tam niestety nie wybierzemy dowolnej ilości odbiorców.
Nie mam pomysłu jak wykonać przekazanie do funkcji @mail ma wykonać się kilka razy dla kilku różnych adresatów.
Zapewne jakieś wywołanie w pętli, czy coś w tym rodzaju. Proszę o pomoc, dzięki.

  1. <?php
  2. if (empty($_POST['submit'])) {
  3. echo "<table border=\"0\"><form method=\"post\">
  4.  
  5. <b>Wybierz adresata: </b>
  6.  
  7. "; ?>
  8.  
  9.  
  10. <tr><?php echo "
  11.  
  12. <td width='25%'><input type=checkbox name=adresat1 value=\"email1@domena1.pl\"></td>
  13. <td width='25%'>&nbsp;Adresat1</td>
  14. <td width='25%'><input type=checkbox name=adresat2 value=\"email2@domena2.pl\"></td>
  15. <td width='25%'>&nbsp;Adresat2</td>
  16. <td width='25%'><input type=checkbox name=adresat3 value=\"email3@domena3.pl\"></td>
  17. <td width='25%'>&nbsp;Adresat3</td>
  18.  
  19. </tr>
  20.  
  21. "; ?>
  22.  
  23.  
  24. <td><b>Twoje dane:</b></td><td><?php echo "<span style=COLOR:red>* pola obowiązkowe</span>"; ?><?php
  25. echo "</td>
  26.  
  27.  
  28.  
  29.  
  30. <tr>
  31. <td>imię i nazwisko</td>
  32. <td><input type=\"text\" name=\"imie_nazwisko\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  33. echo "</td>
  34.  
  35. </tr>
  36.  
  37.  
  38. <tr>
  39. <td>nazwa firmy</td>
  40. <td><input type=\"text\" name=\"nazwa_firmy\" style=\"width: 150px\"></td>
  41.  
  42. </tr>
  43.  
  44. <tr>
  45. <td>miejscowość</td>
  46. <td><input type=\"text\" name=\"miejscowosc\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  47. echo "</td>
  48. </tr>
  49.  
  50.  
  51. <tr>
  52. <td>e-mail</td>
  53. <td><input type=\"text\" name=\"email\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  54. echo "</td>
  55. </tr>
  56.  
  57. <tr>
  58. <td>nr telefonu</td>
  59. <td><input type=\"text\" name=\"nr_telefonu\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  60. echo "</td>
  61. </tr>
  62.  
  63.  
  64. <tr>
  65. <td>fax</td>
  66. <td><input type=\"text\" name=\"fax\" style=\"width: 150px\"></td>
  67. </tr>
  68.  
  69.  
  70. <tr>
  71. <td>&nbsp;</td>
  72. <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
  73. <input type=\"reset\" value=\"Wyczyść\"></td></form>
  74. </tr>
  75. </table>";
  76. }
  77.  
  78. elseif (!empty($_POST['imie_nazwisko']) && !empty($_POST['nazwa_firmy']) && !empty($_POST['miejscowosc']) && !empty($_POST['email']) && !empty($_POST['nr_telefonu'])) {
  79.  
  80.  
  81. $message = "Nadesłał: $_POST[imie_nazwisko]\nFirma: $_POST[nazwa_firmy]\nMiejscowość: $_POST[miejscowosc]\nE-mail: $_POST[email]\nNumer telefonu: $_POST[numer_telefonu]\nFax: $_POST[fax]";
  82.  
  83.  
  84. $header = "From: $_POST[nazwa_firmy] <$_POST[email]>" . "\r\n" . 'Content-Type: text/plain; charset="UTF-8"';
  85.  
  86.  
  87. @mail($_POST['adresat'],"Formularz","$message","$header")
  88. or die('Nie udało się wysłać wiadomości'); // wyświetlenie komunikatu w przypadku powodzenia
  89. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie! Dziękujemy.</strong></div>";
  90. }
  91.  
  92. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  93.  
  94. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cybul7
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


Tak zaznaczam.

Jak zaznaczę 2 check boxy to na końcu wyświetlają się dwa komunikaty, jak 1 to jeden komunikat, więc rozpoznaje ile razy ma zrobić pętlę foreach, ale niestety nie wysyła.
Spróbuje wpisać teraz na sztywno jeden adres i sprawdzę czy dostane 2 maile.


EDIT:

W całym kodzie nadesłanym przez Ciebie zmieniłem tylko w @mail na sztywno adres. Następnie zaznaczyłem 2 checkboxy i otrzymałem dwa maile.
Wychodzi na to, że po prostu wartości value nie są przekazywane do $mail. Jak to naprawić?

  1. foreach($mails as $mail)
  2. {
  3. @mail("adres@mail.pl","Formularz serwisowy","$message","$header")
  4. or die('Nie udaBo si wysBa wiadomo[ci');
  5. echo "Wiadomo[ zostaBa wysBana poprawnie! Dzikujemy.";
  6. }



Może coś nie tak jest z "" i '', które używasz dla echo w tym miejscu:
  1. #
  2. echo '</td>
  3. #
  4. <tr>
  5. #
  6. <td width="25%"><input type=checkbox name="mails[]" value="m@domena.pl"></td>
  7. #
  8. <td width="25%"> DziaB handlowy</td>
  9. #
  10. <td width="25%"><input type=checkbox name="mails[]" value="mp@domena.pl"></td>
  11. #
  12. <td width="25%"> Serwis</td>
  13. #
  14. </tr>';




============================


EDIT2:

Już wiem prawdopodobnie gdzie jest błąd.
W funkcji mail(), parametr z adresem musi być pomiędzy pojedynczymi cudzysłowami np. 'adres@mail.pl', jeśli jest bez '' lub pomiędzy "" to maila nie wyśle.

Przerobiłem troszkę kod w sposób następujący:

  1. <?php
  2. if (empty($_POST['submit']))
  3. {
  4. echo "<table border=\"0\"><form method=\"post\"><td><b>Twoje dane:</b></td><td>";
  5. echo "<span style=COLOR:red>* pola obowizkowe</span>";
  6. echo '</td>
  7. <tr>
  8. <td width="25%"><input type=checkbox name="mail[]" value="adres1@wp.pl"></td>
  9. <td width="25%"> DziaB handlowy</td>
  10. <td width="25%"><input type=checkbox name="mail[]" value="adres2@wp.pl"></td>
  11. <td width="25%"> Serwis</td>
  12. </tr>';
  13.  
  14. echo "
  15. <tr>
  16. <td>imi i nazwisko</td>
  17. <td><input type=\"text\" name=\"imie_nazwisko\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  18. echo "</td></tr><tr>
  19. <td>nazwa firmy</td>
  20. <td><input type=\"text\" name=\"nazwa_firmy\" style=\"width: 150px\"></td>
  21. </tr>
  22. <tr>
  23. <td>miejscowo[</td>
  24. <td><input type=\"text\" name=\"miejscowosc\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  25. echo "</td>
  26. </tr>
  27. <tr>
  28. <td>e-mail</td>
  29. <td><input type=\"text\" name=\"email\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  30. echo "</td>
  31. </tr>
  32. <tr>
  33. <td>nr telefonu</td>
  34. <td><input type=\"text\" name=\"nr_telefonu\" style=\"width: 150px\">"; ?><?php echo "<span style=COLOR:red>*</span>"; ?><?php
  35. echo "</td>
  36. </tr>
  37. <tr>
  38. <td>fax</td>
  39. <td><input type=\"text\" name=\"fax\" style=\"width: 150px\"></td>
  40. </tr>
  41. <tr>
  42. <td> </td>
  43. <td><input type=\"submit\" name=\"submit\" value=\"Wy[lij\">
  44. <input type=\"reset\" value=\"Wyczy[\"></td></form>
  45. </tr>
  46. </table>";
  47. }
  48.  
  49. elseif (!empty($_POST['imie_nazwisko']) && !empty($_POST['nazwa_firmy']) && !empty($_POST['miejscowosc']) && !empty($_POST['email']) && !empty($_POST['nr_telefonu']))
  50. {
  51. $mails = $_POST['mails'];
  52. $message = 'NadesBaB: '.$_POST['imie_nazwisko']."\nFirma: ".$_POST['nazwa_firmy']."\nMiejscowo[: ".$_POST['miejscowosc']."\nE-mail: ".$_POST['email']."\nNumer telefonu: ".$_POST['numer_telefonu']."\nFax: ".$_POST['fax'];
  53. $header = "From: $_POST[nazwa_firmy] <$_POST[email]>" . "\r\n" . 'Content-Type: text/plain; charset="UTF-8"';
  54.  
  55.  
  56.  
  57. $to= $mails[0] . ', ';
  58. $to .= $mails[1];
  59.  
  60.  
  61.  
  62.  
  63. @mail("$to","Formularz serwisowy","$message","$header")
  64. or die('Nie udaBo si wysBa wiadomo[ci');
  65. echo "Wiadomo[ zostaBa wysBana poprawnie! Dzikujemy.";
  66.  
  67.  
  68. }
  69. else echo "WypeBnij wszystkie pola formularza!";
  70.  
  71. ?>


Niestety w ten sposób do $to i $to . dostarczane są maile bez pojedynczego cudzysłowu.
Jeśli zrobię tak:
  1. $to= '$mails[0]' . ', ';
  2. $to .= '$mails[1]';


To maile jako zmienne nie są wstawiane.
Jak zrobić, aby w końcowym rezultacie $to miało postać $to = 'adres1@wp.pl' a nie $to = adres1@wp.pl ?




Ten post edytował cybul7 19.01.2010, 22:41:43
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 06:23