Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz PHP - drobne niedociągnięcia
Forum PHP.pl > Inne > Giełda ofert > Poszukuję
Manackin
Witam!

Na wstępie chciałbym zaznaczyć, że nie znam się na PHP, zajmuję się grafiką komputerową a z programowaniem u mnie bardzo przeciętnie... jednak ostatnio potrzebuje mieć formularz zamówienia na stronę. Niestety takie rzeczy głównie w php się tworzy...więc musiałem zacząć sobie z tym jakoś radzić...
Udało mi się go zaprojektować jako tako czytając porady w internecie...

Oto kod:
  1. <?php
  2. if($_POST['imie'])
  3. {
  4.  
  5. $mail = "Imię: ".$_POST['imie']." \r\nNazwisko: ".$_POST['nazwisko']." \r\nTelefon: ".$_POST['tel']." \r\nImię i nazwisko osoby zmarłej: ".$_POST['imie_i_nazwisko']." \r\nData śmierci: ".$_POST['data_smierci']." \r\nNazwa cmentarza: ".$_POST['nazwa_cmentarza']." \r\nRodzaj nagrobka: ".$_POST['rodzaj_nagrobka']." \r\nRodzaj usługi: ".$_POST['rodzaj_uslugi']." \r\nUsługi dodatkowe: ".$_POST['uslugi_dodatkowe']." \r\nIndywidualne życzenia: ".$_POST['indywidualne_zyczenia']." \r\nForma kontaktu: ".$_POST['forma_kontaktu']."\r\n\r\n";
  6.  
  7. mail ('manackin@gmail.com', 'Zamowienie' , $mail);
  8. }
  9. ?>
  10.  
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <title>Untitled Document</title>
  16. </head>
  17.  
  18. <body>
  19. <FORM NAME="zgloszenie" METHOD="post" ACTION="#">
  20. <p>DANE OSOBY ZAMAWIAJĄCEJ: </p>
  21. <p>
  22. <input type="text" name="imie" size="30" value="" />
  23. Imię<br>
  24. <INPUT TYPE="text" NAME="nazwisko" SIZE="30" value="">
  25. Nazwisko<br>
  26. <INPUT TYPE="text" NAME="tel" SIZE="30" value="">
  27. Telefon</p>
  28. <p>DANE OSOBY ZMARŁEJ:</p>
  29. <p>
  30. <INPUT TYPE="text" NAME="imie i nazwisko" SIZE="30" value="">
  31. Imię i nazwisko <br>
  32. <INPUT TYPE="text" NAME="data smierci" SIZE="30" value="">
  33. Data śmierci <br>
  34. <INPUT TYPE="text" NAME="nazwa cmentarza" SIZE="30" value="">
  35. Nazwa cmentarza </p>
  36. <p>RODZAJ NAGROBKA: <br>
  37. <select name="rodzaj nagrobka">
  38. <option value="">wybierz pakiet</option>
  39. <option value="Grob ziemny">Grób ziemny</option>
  40. <option value="Pomnik pojedynczy">Pomnik pojedyńczy</option>
  41. <option value="Pomnik podwojny">Pomnik podwójny</option>
  42. <option value="Grobowiec rodzinny">Grobowiec rodzinny</option>
  43. </select>
  44. <br>
  45. <p>RODZAJ USŁUGI: <br>
  46. <select name="rodzaj uslugi">
  47. <option value="">wybierz pakiet</option>
  48. <option value="Jednorazowa">Jednorazowa</option>
  49. <option value="Okolicznosciowa">Okolicznościowa</option>
  50. <option value="Kwartalna">Kwartalna</option>
  51. <option value="Polroczna">Półroczna</option>
  52. <option value="Roczna">Roczna</option>
  53. </select>
  54. <br>
  55. <p>USŁUGI DODATKOWE: <br>
  56. <select name="uslugi dodatkowe">
  57. <option value="">wybierz pakiet</option>
  58. <option value="Odsniezanie">Odsnieżanie</option>
  59. <option value="Dodatkowy znicz">Dodatkowy znicz</option>
  60. <option value="Tylko znicz bez sprzatania">Tylko znicz bez sprzątania</option>
  61. <option value="Obsadzanie grobu roslinami">Obsadzanie grobu roślinami</option>
  62. <option value="Wience,wiazanki,kwiaty">Wieńce,wiązanki,kwiaty</option>
  63. </select>
  64.  
  65. <br>
  66. <p>INDYWIDUALNE ŻYCZENIA:
  67. <p>
  68. <textarea name="indywidualne zyczenia" cols="30"></textarea>
  69. <br>
  70. <p>FORMA KONTAKTU: <br>
  71. <select name="forma kontaktu">
  72. <option value="">wybierz formę</option>
  73. <option value="Email">E Mail</option>
  74. <option value="Telefon">Telefon</option>
  75. </select>
  76. </p>
  77. <p>
  78. <input name="submit" type="submit" value="wyślij" />
  79. </p>
  80. </form>
  81.  
  82. </body>
  83. </html>


Formularz działa, jest to zupełnie najprostsza wersja...
Jednak chciałbym dwie drobne usprawnienia wprowadzić.. z czym sobie nie radze... :/
Po pierwsze, chciałbym aby po kliknięciu na przycisk "wyslij" pojawił się jakiś napis typu: "Zgłoszenie zostało wysłane" ... domyślam się
ze nie jest to nic bardzo skomplikowanego, lecz dla mnie jest to trudność (nie mam pojęcia w którym miejscu kodu mam wkleić dana fragment - nawet
nie jestem pewien czy jest właściwy...)
  1. print "<br><center>Zgloszenie zostalo wyslane</center>";
  2. print "<br><center>skontaktujemy sie z Toba wkrótce</center>";

coś w tym stylu? dobrze mysle?

Druga kwestia: Chciałbym także aby formularz sprawdzał czy dane pola są wypełnione, aby nie było takich incydentów, iż wystarczy kliknąć "wyslij" i wysyła maila z pustym formularzem...

Bardzo proszę o pomoc... zależy mi na tym, i tak jestem juz z siebie dumny ze jako tako udało mi się coś naskrobać... ale z tymi elementami męczę się już drugi dzień :/

Z góry dziekuje i pozdrawiam winksmiley.jpg

Kuba
thek
Sprawdzanie pól może się odbyć na dwóch płaszczyznach. Po stronie uzytkownika i wtedy musisz poznać nieco JavaScript. Możesz też na serwer wysłać formularz i w pliku wpisanym do action zrobić sprawdzenie. To on zwróci informacje czy jest wszystko ok czy nie. Ja zazwyczaj w nim w odpowiedniej sytuacji zwracam pewne zmienne jako choćby action.php?er=1 w adresie i na podstawie tej flagi serwis mi rozpoznaje czy wszystko przebiegło pomyślnie, czy też nie. Oczywiście przy wielu polach trzeba to nieco zmodyfikować. Tutaj nie ma sensu tworzyć wtedy osobnego pliku tylko wywoływać się w nim samym (co zresztą jak widzę zrobiłeś). Pozwala to w prosty sposób choćby zwracać formularz z danymi starymi i komunikatami o nie wypełnionych polach. Zauważ, że to właśnie mi pozwala rozwiązać oba Twoje problemy. Podawać kodu nie będę bo walidacja obejmuje wiele różnych rzeczy i nie ma sensu tutaj tego pisać, bo bym Ci pewnie przynajmniej dwukrotnie kod wydłużył. Sam musisz zdecydować jak ma walidacja przebiegać i w pierwszych liniach pliku to ująć oraz rozwiązać.
Ja sobie często robię tak, że tworzę zmienną komunikatu i obiekt błędów. W zależności potem od tego gdzie wykrył błędy tworzę komunikat, który potem na stronie formularza wyświetlam. To logiczne podejście do tematu, bez niepotrzebnych ewentualnych wywoływań header('Location: xxxx') co w początkowym podejściu jest nieuniknione (gdy masz osobne pliki formularza i akcji).
Manackin
Nie za bardzo zrozumiałem to co napisałeś.. dużo w tym tekscie fachowych sformułowań :/
Wiem, wina jest moja - bo to ja jestem laikiem...
Eh, a czy nie da się chociaż tego pierwszego problemu jakoś łatwo rozwiązać? dodać do tego mojego kodu kilka linijek?
Myslę ze aby rozwiązać akurat tą kwestie nie trzeba tworzyc innych plikow....
Koleś
Wysłałem Ci wiadomość prywatną.
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.