Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nietypowe pole formularza
Forum PHP.pl > Forum > PHP
sylwekb
Witam
Czy ktoś spotkał się z takim polem w którymś z formularzy, który miałby możliwość dodania przez wypełniającego formularz kolejnego pola w razie potrzeby?
np pole tekstowe np numeryczne do wpisania tylko liczb, po kliknięciu obok w +
pojawiałoby się pod spodem
nowe pole tekstowe i po kliknięciu + i pojawiałoby się kolejne?

Poza tym standardowe pola jak imię, nazwisko, adres, telefon, e-mail, formularz ma być przesyłany na e-mail zarówno nadawcy jak i odbiorcy?

Czy może gdzieś jest jakiś gotowiec jak to wygląda bo szukam i nie mogę znaleźć takiego rozwiązania?

nospor
Dodatkowe pola dodajesz przy pomocy JS
sylwekb
Jakiś przykład bo nie mogę znaleźć nigdzie takiego rozwiązania. Chyba jakieś zaćmienie i google jakoś także nie chce pomóc.
trueblue
https://www.google.pl/search?q=dynamically+...elds+javascript
Drugi, trzeci link.
sylwekb
Dziękuję bardzo, w sumie po implementacji do formularza działa tylko jest problem jak zrobić aby z tego dynamicznego pola przesyłało na e-mail bo obecnie przesyła samo słowo Array i jak go zabezpieczyć aby minimum jedno pole obowiązkowo wypełnić? Nigdzie nie mogę tego znaleźć. Pozostałe pola oczywiście się przesyłają na e-mail.

Fragmenty za to odpowiedzialne

$myInputs = $_POST["myInputs"];
foreach ($myInputs as $eachInput) {
echo $eachInput . "<br>";
}


$Body .= "Numer seryjny urządzenia 1: ";
$Body .= $myInputs;

Poniżej wklejam cały kod skryptu przesyłającego formularz.

  1. <html>
  2. <head>
  3. <title>Konkurs 3000 w 3 miesiące</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <meta http-equiv="Content-Language" content="pl">
  6. </head>
  7. <body bgcolor="#DFDFDF">
  8. <h3 align="center">Dziękujemy za przesłany formularz</h3>
  9. <?php
  10. $EmailFrom = Trim(stripslashes($_POST['fromemail']));
  11. $copy = $_POST['copy'];
  12. print "<p>Wysłać kopię? " . $copy;
  13. $EmailTo = "MOJ_EMAIL";
  14. $subject = "Konkurs 3000 w 3 miesiące";
  15. $imie = Trim(stripslashes($_POST['imie']));
  16. $nazwisko = Trim(stripslashes($_POST['nazwisko']));
  17. $nazwa_firmy = Trim(stripslashes($_POST['nazwa_firmy']));
  18. $telefon = Trim(stripslashes($_POST['telefon']));
  19. $miejscowosc = Trim(stripslashes($_POST['miejscowosc']));
  20. $firma = Trim(stripslashes($_POST['firma']));
  21. $myInputs = $_POST["myInputs"];
  22. foreach ($myInputs as $eachInput) {
  23. echo $eachInput . "<br>";
  24. }
  25. $akceptacja_regulaminu = $_POST["akceptacja_regulaminu"];
  26. $zgoda_dane_osobowe = $_POST["zgoda_dane_osobowe"];
  27. $copy = $_POST['copy'];
  28.  
  29. $Body = "";
  30. $Body .= "Imię: ";
  31. $Body .= $imie;
  32. $Body .= "\n\n";
  33. $Body .= "Nazwisko: ";
  34. $Body .= $nazwisko;
  35. $Body .= "\n\n";
  36. $Body .= "Nazwa firmy: ";
  37. $Body .= $nazwa_firmy;
  38. $Body .= "\n\n";
  39. $Body .= "Telefon: ";
  40. $Body .= $telefon;
  41. $Body .= "\n\n";
  42. $Body .= $EmailFrom;
  43. $Body .= "\n\n";
  44. $Body .= "Miejsce zakupu:";
  45. $Body .= "Miejscowość: ";
  46. $Body .= $miejscowosc;
  47. $Body .= "\n\n";
  48. $Body .= "Firma: ";
  49. $Body .= $firma;
  50. $Body .= "\n\n";
  51. $Body .= "Numer seryjny urządzenia 1: ";
  52. $Body .= $myInputs;
  53. $Body .= "\n\n";
  54. $Body .= "Akceptacja regulaminu: ";
  55. $Body .= $akceptacja_regulaminu;
  56. $Body .= "\n\n";
  57. $Body .= "Zgoda na przetwarzanie danych osobowych: ";
  58. $Body .= $zgoda_dane_osobowe;
  59. $Body .= "\n\n";
  60. $Body .= "\n";
  61. print "<p>Wiadomość w trakcie przesyłania ... ";
  62. $success = mail($EmailTo, $subject, $Body, $EmailFrom);
  63. if ($success) {
  64. print "<p>Wiadomość prawidłowo wysłana ...";
  65. }
  66. if ($copy == "yes") {
  67. $subject = $subject . " [Your Copy]";
  68. print "<p>Kopia wysłana @ " . $EmailFrom;
  69. $copysent = mail($EmailFrom, $subject, $Body, $EmailFrom);
  70. if ($copysent) {
  71. print "<p>Kopia wiadomości prawidłowo wysłana ... ";
  72. }
  73. }
  74. ?>
  75. </body>
  76. </html>
  77.  
nospor
$Body .= $myInputs;
To jest przypisanie tablicy. Nic wiec dziwnego ze dostajesz tekst array.... Masz do body dopisac kazdy element tablicy z osobna
sylwekb
Czy dobrze zrozumiałem, że mam wprowadzić aż 20 $body jeśli taki limit ustaliłem na dynamicznym polu wg schematu jak poniżej?
$Body .= $myInputs[1];
...
$Body .= $myInputs[20];

W niektórych przypadkach będzie potrzebne wypełnienie tylko jednego pola, w innych może być nawet 20 pól. Czy jeśli w $Body dam wszystkie 20 pól to pojawią się w e-mailu mimo, że nie zostały wypełnione czy tylko te, które zostały wypełnione?
nospor
MAsz uzyc petle FOREACH, tak jak uzyles jej do wyswietlenia

foreach ($myInputs as $eachInput) {
echo $eachInput . "<br>";
}

Co do niepustych, to daj warunek IF, !empty i dodasz tylko niepuste
sylwekb
Jakoś dziś ciężko myślę facepalmxd.gif , zrobiłem jak poniżej i Array się nie pojawia ale też nie wysyła wpisanego w formularzu kodu. Jak to zrobić w konstrukcji z tym IF i !Empty żeby nie wysyłało pustych?


  1. $Body .= "Numer seryjny urządzenia 1: ";
  2. foreach ($myInputs as $eachInput) {
  3. echo $eachInput . "<br>";
  4. }
Turson
A odróżniasz $Body .= od echo?
sylwekb
Już się pogubiłem, ten początkowy fragment z foreach mam wstawić do części Body bo nie rozumiem tej konstrukcji, chodzi o przesłanie dynamicznego pola na e-mail, drukuje się prawidłowo.

  1. $myInputs = $_POST["myInputs"];
  2. foreach ($myInputs as $eachInput) {
  3. echo $eachInput . "<br>";
  4. }
  5. $akceptacja_regulaminu = $_POST["akceptacja_regulaminu"];
  6. $zgoda_dane_osobowe = $_POST["zgoda_dane_osobowe"];
  7. $copy = $_POST['copy'];
  8.  
  9. $Body = "";
  10. $Body .= "Imię: ";
  11. $Body .= $imie;
  12. $Body .= "\n\n";
  13. $Body .= "Nazwisko: ";
  14. $Body .= $nazwisko;
  15. $Body .= "\n\n";
  16. $Body .= "Nazwa firmy: ";
  17. $Body .= $nazwa_firmy;
  18. $Body .= "\n\n";
  19. $Body .= "Telefon: ";
  20. $Body .= $telefon;
  21. $Body .= "\n\n";
  22. $Body .= "nadawca: ";
  23. $Body .= $nadawca;
  24. $Body .= "\n\n";
  25. $Body .= "Miejsce zakupu:";
  26. $Body .= "Miejscowość: ";
  27. $Body .= $miejscowosc;
  28. $Body .= "\n\n";
  29. $Body .= "Firma: ";
  30. $Body .= $firma;
  31. $Body .= "\n\n";
Daimos
dzień dziecka
zamiast echo daj $Body .=
  1. foreach ($myInputs as $eachInput) {
  2. $Body .= $eachInput . "<br>";
  3. }

ale wstaw to za 9 linią Twojego kodu! ($Body = "";)
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.