Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz dopracowanie
Forum PHP.pl > Forum > Przedszkole
pe_te
Potrzebuję małej pomocy z prostym pofmularzem... a mianowicie po wypełnieniu formularza lub jego nie dopełnieniu do konca i przyciśnięciu wyślij znika cały formularz i wyświetla sie komunikat że albo wysłało albo prosi o wypełnienie pól... chciałbym by te komentarze generowały sie zaraz pod formularzem... by on nie znikał... Pomożecie? questionmark.gif
<?php
// sprawdzamy, czy zmienna $submit jest pusta
if (empty($_POST['submit'])) {
// wyświetlamy formularz
echo "<table border=\"0\"><form method=\"post\">
<tr>
<td>Treść wiadomości</td>
<td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
</tr>
<tr>
<td>Imię, nazwisko lub nick</td>
<td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>Adres e-mail</td>
<td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type=\"submit\" name=\"submit\" value=\"Wyślij\">&nbsp;
<input type=\"reset\" value=\"Od nowa\"></td></form>
</tr>
</table>";
}
// sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
// jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
// zmienna $message zawiera treść wiadomości
$message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
// zmienna $header zawiera przede wszystkim adres zwrotny
$header = "From: $_POST[imie] <$_POST[email]>";
// funkcja mail() za pomocą której wiadomość zostanie wysłana
@mail("mail@google.pl","Wiadomosc ze strony WWW","$message","$header")
or die('Nie udało się wysłać wiadomości');
// wyświetlenie komunikatu w przypadku powodzenia
echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
// lub w przypadku nie wypełnienia formularza do końca
else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
?>
grzegorzr
  1. <?php
  2. // sprawdzamy, czy zmienna $submit jest pusta
  3. if (empty($_POST['submit'])) {
  4. // wyświetlamy formularz
  5. echo "<table border=\"0\"><form method=\"post\">
  6. <tr>
  7. <td>Treść wiadomości</td>
  8. <td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td>
  9. </tr>
  10. <tr>
  11. <td>Imię, nazwisko lub nick</td>
  12. <td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td>
  13. </tr>
  14. <tr>
  15. <td>Adres e-mail</td>
  16. <td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td>
  17. </tr>
  18. <tr>
  19. <td> </td>
  20. <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\"
  21. <input type=\"reset\" value=\"Od nowa\"></td></form>
  22. </tr>
  23. </table>";
  24. }
  25. // sprawdzamy, czy zmienne przesłane z formularza nie są puste
  26. elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) {
  27. // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
  28. // zmienna $message zawiera treść wiadomości
  29. $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]";
  30. // zmienna $header zawiera przede wszystkim adres zwrotny
  31. $header = "From: $_POST[imie] <$_POST[email]>";
  32. // funkcja mail() za pomocą której wiadomość zostanie wysłana
  33. @mail("mail@google.pl","Wiadomosc ze strony WWW","$message","$header")
  34. or die('Nie udało się wysłać wiadomości');
  35. // wyświetlenie komunikatu w przypadku powodzenia
  36. echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
  37. }
  38. // lub w przypadku nie wypełnienia formularza do końca
  39. else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>";
  40. ?>


Solucja
  1. <?php
  2. /**
  3. Flagi
  4. 1 - pokaz fromularz
  5. 2 - formularz wyslany
  6. 3 - bledy w formularzu*/
  7. function getFormFlag(){
  8. //pokaz formuarz
  9. if (empty($_POST['submit'])
  10. return 1;
  11. //czy pola są OK?
  12. if(empty($_POST['tresc']) || !empty($_POST['imie']) || !empty($_POST['email'])
  13. return 3;
  14. //wszystko ok
  15. return 2;
  16. }
  17. ?>

i teraz
  1. <?php
  2. $flaga = getFormFlag();
  3. if($flaga==|| $flaga==3){
  4. //pokaz formularz; linie kodu od 4 do 23
  5. }
  6. if(getFormFlag()===2){
  7. //wszystko OK; linie od 27 do 36
  8. }
  9. if(getFormFlag()===3){
  10. //błedy; linia 39
  11. }
  12. ?>

nie zapomnij aby atrybut action w znaczniku form wskazywał na tą samą stronę co wyświetlany formularz
pe_te
Dzięki grzegorzr za odpowiedz... lecz chyba jestem zbyt bardzo początkujący sad.gif bo za chiny nie wiem co z czym polączyć... mam 3 kody... łącze je w jeden?questionmark.gif

a nikt inny nie wie??
grzegorzr
pierwszy blok (#1) to twoj oryginalny kod (przekleilem go bo nie uzylesz znaczikow php i kiepsko sie przeglada go w sposob niekolorowy);

drugi (#2) to nasza funkcja pomocnicza

trzeci (#3) to skrotowy pokaz jak powinno dzialac (słowo "linie" kodu odnosza sie do bloku #1)
przeemek
Panowie a jak zmienić ten skrypt informacje w nim wpisane wysyłał nie na email tylko do innej pod strony w nowej ramce
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.