Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z formularzem
Forum PHP.pl > Forum > Przedszkole
bilskij
Mam taki oto kod HTML

  1. <form id="pytanie" action="email.php" method="post">
  2. <div class="row">
  3. <div class="lr">Imię i nazwisko: <span class="form-required">*</span></div>
  4. <div class="rr"><input type="text" id="pers" name="pers" /></div>
  5. </div>
  6. <div class="row">
  7. <div class="lr">E-Mail: </div>
  8. <div class="rr"><input type="text" id="email" name="email" /></div>
  9. </div>
  10. <div class="row">
  11. <div class="lr">Telefon:</div>
  12. <div class="rr"><input type="text" id="phone" name="phone" /></div>
  13. </div>
  14. <div class="row">
  15. <div class="lr">Treść pytania: <span class="form-required">*</span></div>
  16. <div class="rr"><textarea id="question" name="question"></textarea></div>
  17. </div>
  18. <div id="send">
  19. <div class="submit"><input type="submit" value="wyślij" id="submit"/></div>
  20. </div>
  21. </form>


oraz kod php w oddzielnym pliku email.php

  1. <?php
  2.  
  3. $pers = $_REQUEST['pers'];
  4. $question = $_REQUEST['question'];
  5.  
  6. $send = @mail("mail@mail.com", $pers, $question);
  7.  
  8. if(!$send){
  9.  
  10. die();
  11.  
  12. }
  13.  
  14. ?>


Niestety e-mail nie zostaje wyslany po nacisnieciu przycisku submit.. Ktos wie dlaczego ?
Sokon
Po pierwsze zmień
  1. $pers = $_REQUEST['pers'];
  2. $question = $_REQUEST['question'];

na
  1. $pers = $_POST['pers'];
  2. $question = $_POST['question'];


Po drugie korzystając z funkcji mail() pamiętaj, że jej składnia to:
  1. mail( "odbiorca", "temat", "treść wiadomości", "nagłówek" );

Ja to np. załatwiam tak:
  1. function newRegistration( $email ) {
  2. $sender = "no-replay@mojadomena.pl";
  3. $subject = "Nowa rejestracja";
  4. $message = "Założono konto na mojadomena.pl";
  5. $header = "MIME-Versio: 1.0\r\nContent-type: text/html; charset=UTF-8\r\nFrom: $sender\r\nReply-To: $sender";
  6. mail( $email, $subject, $message, $header );
  7. }
bilskij
Dzieki, zadzialalo smile.gif A teraz jak zrobić by po naciśnięciu przycisku submit nie przechodziło mi do pustego pliku email.php lecz pozostawało na stronie formularza i dopisywało do jakiegoś div'a treść ?
Daiquiri
Proponuję wziąć się za jakiś kurs PHP/HTML - to na początek. Potem, w przypadku błędów, pokazać co już napisałeś i co nie działa.

Zainteresuj się: action="email.php".
bilskij
Wiem, ze wypada wziasc sie za kurs php, ale chyba od tego jest forum, aby ktos pomogl questionmark.gif Czy dostane odpowiedz ? Nie musi byc kompletna, a moze byc jedynie nakierowanie... A moze da sie to zrobic poprzez javascript questionmark.gif
mch.frnc
Cytat(bilskij @ 10.09.2011, 13:37:14 ) *
Wiem, ze wypada wziasc sie za kurs php, ale chyba od tego jest forum, aby ktos pomogl questionmark.gif Czy dostane odpowiedz ? Nie musi byc kompletna, a moze byc jedynie nakierowanie... A moze da sie to zrobic poprzez javascript questionmark.gif

no przecież (może nie dosłownie) @Daiquiri Ci odpowiedział.
Cytat
Zainteresuj się: action="email.php".

nie musisz tego rozbijać na dwa pliki, możesz wszystko umieścić w pliku email.php i np. sprawdzić warunek czy $_POST['email'] istnieje i czy nie jest puste, wtedy wykonujesz kod wysłania maila i wyświetlasz co tam chcesz w danym ifie (czy jak byś to tam sobie skombinował)
bilskij
Czyli chodzi Ci aby caly kod ktory mam obecnie w html umiescic w pliku php ?
Sokon
Cytat(bilskij @ 10.09.2011, 08:57:59 ) *
Dzieki, zadzialalo smile.gif A teraz jak zrobić by po naciśnięciu przycisku submit nie przechodziło mi do pustego pliku email.php lecz pozostawało na stronie formularza i dopisywało do jakiegoś div'a treść ?


Wysyłasz treść formularza mailem, więc co dokładnie chcesz wpisać w DIV'a ?

Co do jednego pliku to tak jak Ci piszą koledzy, zainteresuj się
  1. action="email.php"
zmień nagłówek formularza na
  1. <form id="pytanie" action="" method="post">
i pod nim dopisz
  1. <?php
  2. if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  3. TWOJA FUNKCJA WYSYŁANIA MAILA
  4. czyli innymi słowy wklej tu zawartość pliku email.php
  5. }
  6. ?>
Daiquiri
Cytat(bilskij @ 10.09.2011, 13:37:14 ) *
Wiem, ze wypada wziasc sie za kurs php, ale chyba od tego jest forum, aby ktos pomogl questionmark.gif Czy dostane odpowiedz ? Nie musi byc kompletna, a moze byc jedynie nakierowanie... A moze da sie to zrobic poprzez javascript questionmark.gif
Twoje pytanie dobitnie świadczy o tym, iż kursu (HTML) na oczy nie widziałeś lub po prostu zapoznałeś się z nim wybitnie pobieżnie. Zgadzamy się co do tego, że forum jest do pomocy. Mylisz jednak pomoc z pisaniem kodu za Ciebie. Jak już wyżej pisałam wystarczyło zainteresować się "action" w formularzu - uważam to za (co najmniej) nakierowanie.

W przypadku napotkania kolejnych trudności - zacznij od wklejenia tego, co udało Ci się już osiągnąć smile.gif.

bilskij
Dzieki Sokon za podpowiedz. Rozumiem, że teraz plik muszę zapisac z rozszerzeniem php, bo inaczej nie bedzie dzialac ? Po zapisaniu z rozszerzeniem html kod php jest po prostu traktowany jako tekst oraz wyswietlany na stronie. Chyba że to kwestia ustawien serwera? Bo na dysku wyswietla sie poprawnie a po wrzuceniu na serwer kod miedzy znacznikami <?php ?> jest wyswietlany jako tekst
Sokon
Pliki zawierające kod PHP który ma być wykonany przez serwer powinny być w pliku o rozszerzeniu .php, a sam kod PHP ma być w znacznikach
  1. <?php
  2. ?>
bilskij
Dodalem obsluge plików html przez php i dziala jak nalezy z rozszerzeniem html smile.gif

  1. <form id="pytanie" action="" method="post">
  2. <?php
  3. if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  4. $sender = $_POST['email'];
  5. $pers = $_POST['pers'];
  6. $question = "Treść wiadomości:\n<br /><br />$_POST[question]\n<br /><hr />Wysłał: $_POST[pers]\n<br />E-mail: $_POST[email]\n<br />Telefon: $_POST[phone]";
  7. $header = "MIME-Versio: 1.0\r\nContent-type: text/html; charset=UTF-8\r\nFrom: $sender\r\nReply-To: $sender";
  8.  
  9. mail("forms@starzawa.pl", "Formularz", $question, $header);
  10. }
  11. ?>
  12. <div class="row">
  13. <div class="lr">Imię i nazwisko: <span class="form-required">*</span></div>
  14. <div class="rr"><input type="text" id="pers" name="pers" /></div>
  15. </div>
  16. <div class="row">
  17. <div class="lr">E-Mail: </div>
  18. <div class="rr"><input type="text" id="email" name="email" /></div>
  19. </div>
  20. <div class="row">
  21. <div class="lr">Telefon:</div>
  22. <div class="rr"><input type="text" id="phone" name="phone" /></div>
  23. </div>
  24. <div class="row">
  25. <div class="lr">Treść pytania: <span class="form-required">*</span></div>
  26. <div class="rr"><textarea id="question" name="question"></textarea></div>
  27. </div>
  28. <div id="send">
  29. <div id="message-sent></div>
  30. <div class="submit"><input type="submit" value="wyślij" id="submit"/></div>
  31. </div>
  32. </form>


Teraz jak moglbym poprzez php dodac tekst do diva o id="message-sent" questionmark.gif?
Ociu
  1. <form id="pytanie" action="" method="post">
  2. <?php
  3. if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  4. $sender = $_POST['email'];
  5. $pers = $_POST['pers'];
  6. $question = "Treść wiadomości:\n<br /><br />$_POST[question]\n<br /><hr />Wysłał: $_POST[pers]\n<br />E-mail: $_POST[email]\n<br />Telefon: $_POST[phone]";
  7. $header = "MIME-Versio: 1.0\r\nContent-type: text/html; charset=UTF-8\r\nFrom: $sender\r\nReply-To: $sender";
  8.  
  9. $sent = mail("forms@starzawa.pl", "Formularz", $question, $header);
  10. }
  11. ?>
  12. <div class="row">
  13. <div class="lr">Imię i nazwisko: <span class="form-required">*</span></div>
  14. <div class="rr"><input type="text" id="pers" name="pers" /></div>
  15. </div>
  16. <div class="row">
  17. <div class="lr">E-Mail: </div>
  18. <div class="rr"><input type="text" id="email" name="email" /></div>
  19. </div>
  20. <div class="row">
  21. <div class="lr">Telefon:</div>
  22. <div class="rr"><input type="text" id="phone" name="phone" /></div>
  23. </div>
  24. <div class="row">
  25. <div class="lr">Treść pytania: <span class="form-required">*</span></div>
  26. <div class="rr"><textarea id="question" name="question"></textarea></div>
  27. </div>
  28. <div id="send">
  29. <div id="message-sent><?php echo ($sent) ? "Dziekujemy za wyslanie maila" : "" ; ?></div>
  30. <div class="submit"><input type="submit" value="wyślij" id="submit"/></div>
  31. </div>
  32. </form>
Sokon
Mój błąd, nie oto mi chodziło a po przeczytaniu swojego posta faktycznie zrobiłeś dokładnie to co ja napisałem. To co masz poniżej powinno działać, ale robiłem to w przerwie od pracy więc nie miałem czasu sprawdzić. To jest to samo co napisał Ci kolega Ociu tylko w innej formie.
  1. <?php
  2. if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  3. $sender = $_POST['email'];
  4. $pers = $_POST['pers'];
  5. $question = "Treść wiadomości:\n<br /><br />$_POST[question]\n<br /><hr />Wysłał: $_POST[pers]\n<br />E-mail: $_POST[email]\n<br />Telefon: $_POST[phone]";
  6. $header = "MIME-Versio: 1.0\r\nContent-type: text/html; charset=UTF-8\r\nFrom: $sender\r\nReply-To: $sender";
  7. if( mail("forms@starzawa.pl", "Formularz", $question, $header) ) {
  8. //Jeżeli mail wysłał się poprawnie to tutaj treść wiadomości która będzie w div'ie o id message-sent
  9. $message-sent = "";
  10. } else {
  11. //Jeżeli mail nie wysłał się poprawnie to tutaj treść wiadomości która będzie w div'ie o id message-sent
  12. $message-sent = "";
  13. }
  14. }
  15. ?>
  16.  
  17. <form id="pytanie" action="" method="post">
  18. <div class="row">
  19. <div class="lr">Imię i nazwisko: <span class="form-required">*</span></div>
  20. <div class="rr"><input type="text" id="pers" name="pers" /></div>
  21. </div>
  22.  
  23. <div class="row">
  24. <div class="lr">E-Mail: </div>
  25. <div class="rr"><input type="text" id="email" name="email" /></div>
  26. </div>
  27.  
  28. <div class="row">
  29. <div class="lr">Telefon:</div>
  30. <div class="rr"><input type="text" id="phone" name="phone" /></div>
  31. </div>
  32.  
  33. <div class="row">
  34. <div class="lr">Treść pytania: <span class="form-required">*</span></div>
  35. <div class="rr"><textarea id="question" name="question"></textarea></div>
  36. </div>
  37.  
  38. <div id="send">
  39. <div id="message-sent><?php echo $message-sent; ?></div>
  40. <div class="submit"><input type="submit" value="Wyślij" id="submit"/></div>
  41. </div>
  42. </form>
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.