Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz kontaktowy - nie wysyła wszystkich pól
Forum PHP.pl > Forum > Przedszkole
Foxhunt
Witam

Mam problem, nad ktorym siedze już chyba 3 godzine i już zgłupiałem. Może mi ktoś pomóc? Ja z phpa nie jestem zbyt mocny, no ale przynajmniej probowałem coś wykombinować...

Mam sobie formularz kontaktowy, taki o:

  1. <div id="contactFormArea">
  2. <form action="form-kontakt/contact.php" method="post" id="cForm">
  3. <label for="posName">Imię:</label>
  4. <input class="text" type="text" size="25" name="posName" id="posName" />
  5. <label for="posEmail">Email:</label>
  6. <input class="text" type="text" size="25" name="posEmail" id="posEmail" />
  7. <label for="posRegard">Temat:</label>
  8. <input class="text" type="text" size="25" name="posRegard" id="posRegard" />
  9. <label for="posText">Wiadomość:</label>
  10. <textarea cols="50" rows="5" name="posText" id="posText"></textarea>
  11. <label for="posText">Wiadomość2:</label>
  12. <textarea cols="50" rows="5" name="posText2" id="posText2"></textarea>
  13. <label for="posText">Wiadomość3:</label>
  14. <textarea cols="50" rows="5" name="posText2" id="posText3"></textarea>
  15. <input class="submit" type="submit" name="sendContactEmail" id="sendContactEmail" value=" Wyślij wiadomość " />
  16. </label>
  17. </form></div>




I do tego mam sobie również taki oto skrypt:


  1. <?php
  2. include "config.php";
  3.  
  4. function cleanPosUrl ($str) {
  5. return stripslashes($str);
  6. }
  7. if ( isset($_POST['sendContactEmail']) )
  8. {
  9. $to = $yourEmail;
  10. $subject = $yourSubject.': '.$_POST['posRegard'];
  11. $message = cleanPosUrl($_POST['posText']);
  12. $headers = "From: ".cleanPosUrl($_POST['posName'])." <".$_POST['posEmail'].">\r\n";
  13. $headers .= 'To: '.$yourName.' <'.$yourEmail.'>'."\r\n";
  14. $mailit = mail($to,$subject,$message,$headers);
  15. if ( @$mailit ) {
  16. header('Location: '.$referringPage.'?success=true');
  17. }
  18. else {
  19. header('Location: '.$referringPage.'?error=true');
  20. }
  21. }
  22. ?>


Problem polega na tym, ze mi na maila przychodzi wszystkie pieknie, tylko w tresci maila mam tylko tekst ktory wypelnilem w polu WIADOMOSC, nie ma w mailu ktory do mnie przyjdzie tekstu wpisanego w pola WIADOMOSC2 oraz WIADOMSC 3. I nie mam pojecia dlaczego. Probowalem do powyzszego skryptu dopisac:

  1. $message = cleanPosUrl($_POST['posText2']);
  2. $message = cleanPosUrl($_POST['posText3']);


Ale tez nie działa. Probowalem jeszcze kilknuastu innych opcji i nic.
Po prostu chcialbym miec mozliwosc dodawania sobie tylu pół do formularza ile bede chcial.
Pomoże mi z tym ktoś? Bylbym wdzieczny, bo ja już nie daje rady sad.gif
redeemer
1. W trzecim textarea masz name ustawione na posText2.

2. W twoim skrypcie:

  1. $message = cleanPosUrl($_POST['posText']);

Tutaj do $message podstawiasz tylko jedną zmienna o nazwie posText, czyli textarea numer 1.

Jeżeli chcesz trzy pola umieścić w $message to:
  1. $message = cleanPosUrl($_POST['posText']);
  2. $message .= cleanPosUrl($_POST['posText2']);
  3. $message .= cleanPosUrl($_POST['posText3']);

Lub krócej:
  1. $message = cleanPosUrl( $_POST['posText'] . $_POST['posText2'] . $_POST['posText3'] );

Foxhunt
No i tak właśnie idąc na logike zrobiłem. Wstawilem tak jak Ty proponujesz:

  1. [list=1][*]$message = cleanPosUrl($_POST['posText']);[*]$message .= cleanPosUrl($_POST['posText2']);[*]$message .= cleanPosUrl($_POST['posText3']);[/list]


No i nic. Dalej w mailu przychodzi mi tylko tekst z pierwszego pola sad.gif
Dlatego wlasnie zglupialem sad.gif

Hm... serio nikt nie potrafi rozwiazac tego problemu?
darko
co wypluwa print_r($message); po wprowadzeniu zmian ?
Cysiaczek
Zobacz na atrybuty name tych pól textarea. To one są indeksami w tablicy $_POST, a nie ich atrybuty id.
Zobacz na to:

Mamy 3 pola
pole1
pole2
pole2

Jeśli wypełnisz pole1, to jego zawartość będzie dostępna pod kluczem $_POST['pole1'].
Ale co się dzieje przy następnych polach? Przeanalizujmy.
Załóżmy, że wypełniłeś środkowe pole2, a ostatnie pole2 zostawiłeś puste. Co zrobi php?
Wstawi wartość pod klucz pole2, a następnie... wstawi kolejną wartość pole2 pod ten sam klucz, która jest pusta :-)

Pozdrawiam
Foxhunt
Chyba nie rozumiem sad.gif
Ja w phpie nie jestem za bardzo zorientowany, tak bardziej łopatologicznie można byloby mi to przedstawic ? smile.gif
Co tam konkretnie powinno byc wstawione zeby to wreszscie zadziłało, bo juz tutaj trace wiare sad.gif
darko
Zwróć uwagę na to, żeby atrybuty name, a nie id dla elementów textarea miały kolejno wartości: posText, posText2 oraz posText3, czyli:

  1. <label for="posText">Wiadomość:</label>
  2. <textarea cols="50" rows="5" name="posText" id="posText"></textarea>
  3.  
  4. <label for="posText2">Wiadomość2:</label>
  5. <textarea cols="50" rows="5" name="posText2" id="posText2"></textarea>
  6.  
  7. <label for="posText3">Wiadomość3:</label>
  8. <textarea cols="50" rows="5" name="posText3" id="posText3"></textarea>


Piszesz, że to poprawiłeś i dalej nie działa, pokaż jeszcze raz swój kod po zmianach.

thek
Pola w formularzu są przesłane ze zwracaniem uwagi na NAME, a nie ID. Jeśli więc masz kilka pól o tym samym NAME to wysłane będzie tylko jedno z nich. Nazwij każde inaczej to dostaniesz wszystkie.
@up: kolega Darko podał Ci dokładnie jak POWINNO to wyglądać.
nospor
dobra panowie, solicie o pupie marynie a problem jest banalny:
@Foxhunt wysyłał forma ajaxem i nie raczyl do tego ajaxa dołączyc wszystkich pól smile.gif

ps: i czemu to jeszcze na przedszkolu nie lezy? przenosze
Foxhunt
Zgadza się smile.gif

nospor - wyjasnił sytuacje.
Teraz bowiem zapytuje Was... jak zrobić żeby w mailu teksty z pol formularza wyswietlaly sie jedna pod druga a nie obok siebie.
I druga sprawa zebym w mailu mial napsiane np. Miasto: i napisane to kto cos wpisze w formularzu. Wiec jakt ktos wpisze w polu formularza Kraków, to w mailu zebym mial Miasto: Kraków.

Jak ta linijka powinna wygladac, zeby tak bylo ?
  1. $message = cleanPosUrl($_POST['posText']).' '.cleanPosUrl($_POST['posText2']).' '.cleanPosUrl($_POST['posText3']);


Z tym '\n' oraz <br /> i z wpisywaniem Miasto: to mi cos nie wychodzi. Kombinuje i nie wiem w ktorym miejscu to powinno byc wpisane.. Help...

pozdrawiam
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.