Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][jQuery] Formularz mail - odswieżanie.
Forum PHP.pl > Forum > Przedszkole
cypeczek
Witam mam taki problem. Zrobiłem wysakkujące okienko w jQuery według tego poradnika: http://yensdesign.com/2008/09/how-to-creat...p-using-jquery/ Do okienka wstawilem formularz mail w php. Tak wygląda cały kod, okienko z zawartym formularzem.
  1. <div id="popupContact">
  2. <a id="popupContactClose">x</a>
  3. <h1>Formularz zakupu PoMęsku.</h1>
  4. <p id="contactArea">
  5.  
  6. <!-- PHP -->
  7. if (count($_POST))
  8. {
  9. ////////// USTAWIENIA //////////
  10. $email = 'cbarton@poczta.fm';
  11. $subject = 'Produkt:';
  12. $message = 'Dziekujemy za zakup produktów w naszym sklepie.';
  13. $error = 'Wystąpił błąd podczas zakupów. Skorzystaj ponownie z formularza.';
  14. $charset = 'iso-8859-2';
  15. //////////////////////////////
  16.  
  17. $head =
  18. "MIME-Version: 1.0\r\n" .
  19. "Content-Type: text/plain; charset=$charset\r\n" .
  20. "Content-Transfer-Encoding: 8bit";
  21. $body = '';
  22. foreach ($_POST as $name => $value)
  23. {
  24. if (is_array($value))
  25. {
  26. for ($i = 0; $i < count($value); $i++)
  27. {
  28. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  29. }
  30. }
  31. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  32. }
  33. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  34. }
  35. else
  36. {
  37. <!-- ENDPHP -->
  38.  
  39. <form action="?" method="post">
  40. <table>
  41. <tr>
  42. <td>Produkt:</td>
  43. <td>
  44. <select name="Produkt:">
  45. <option>Usunięcie ostrzeżenia</option>
  46. </select>
  47. </td>
  48. </tr>
  49. <tr>
  50. <td>Twój email:</td>
  51. <td><input type="text" size="25" name="Email kupującego: " /></td>
  52. </tr>
  53. <tr>
  54. <td>Twój nick:</td>
  55. <td><input type="text" size="25" name="Nick kupującego: " /></td>
  56. </tr>
  57. </table>
  58. </br>
  59. <table>
  60. <tr>
  61. <td>Informacje dodatkowe:</td>
  62. </tr>
  63. <tr>
  64. <td><textarea name="Informacje dodatkowe: " cols="46" rows="6"></textarea></td>
  65. </tr>
  66. </table>
  67. </br></br>
  68. <table align="center">
  69. <tr>
  70. <td><button type="submit">Wyślij</button></td>
  71. </tr>
  72. </table>
  73. </form>
  74.  
  75. <!-- PHP -->
  76. }
  77. <!-- ENDPHP -->
  78.  
  79. </p>
  80. </div>
  81. <div id="backgroundPopup"></div></td>


I mam taki problem, wysyłam formularz i jest ok wszystko wiadomość przychodzi na maila (bez polskich znaków, też proszę bardzo o podpowiedź jak zmienić kodowanie żeby było dobrze, na stronie jest ok, ale w treści maila juz nie). I pojawia się komunikat że wysłano. Super jest ok. Zamykam okienko. Uruchamiam ponownie i wciąż jest komunikat z podziękowaniem a nie formularz do wypełnienia. Trzeba jeszcze raz wejść na tą stroną, żeby był formularz, samo odświerzanie nic nie daje. Jest jakieś rozwiązanie tego problemu?

PS. Kod php mam <!-- PHP --><!-- ENDPHP --> tak ponieważ jest to plik stylu phpBB3 i nie mogę zapisać pliku jako php.

Bardzo proszę o pomoc i z góry dziękuję.

Nie wiem czy można tutaj, ale podbije. Bardzo mi zależy na rozwiązaniu tego problemu.
Riggs
Na pewno coś jest nie tak z tym count($_POST). Formularze sprawdza się najczęściej za pomocą "submit" a więc przycisk ma jakąś tam nazwę np. "submit" i sprawdzasz isset($_POST['submit']).
cypeczek
Ale formularz działa poprawnie. Tylko jak zrobić żeby po wysłaniu pokazał się komunikat wysłano. A potem po odświeżeniu, albo po zamknięcia okienka formularza był on znowu formularzem, a nie wyświetlał się tekst wysłano.
cniak
przegladarka zapisuje dane do pamieci podrecznej, wiec dopiero po odswiezeniu otwiera na nowo. Daj po wyslaniu formularza header location i chyba bedzie po problemie smile.gif
Riggs
Hmm nie wiem czy Cię dobrze rozumiem. Jeśli chcesz żeby w okienku wywołanym za pomocą jQuery user mógł wysłać maila a później w tym samym okienku pojawiło się info o wysłaniu maila to musisz skorzystać z AJAX. Za pomocą AJAX wyślesz maila, odbierzesz komunikat czy się udało i odpowiednio podmienisz zawartość tegoż okienka.
Wilu88
Hmm, a takie pytanko. Jakbym chciał wywołać tego popupa, ale w czasie wykonywania kodu php? Tzn. chciałbym aby wyświetliło mi tego popup'a gdy logowanie się nie powiedzie. A nie jak w tym przykładzie po kliknięciu na button.
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.