Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z formularzem
Forum PHP.pl > Forum > PHP
czoko
Witam.

Otóż mam problem z formularzem wysyłkowym. Mianowicie chodzi o sprawdzanie poprawności pól, tzn żeby pola były obowiązkowe i gdy nie zostaną wypełnione wyświetla się komunikat. Nie wiem jak to zrobić :/
Po wysłaniu jest poprawna wiadomość, że została wysłana.

Może ktoś pomoże?

Podaje kod sprawdzający formularz.


  1. <?php
  2.  
  3. $nick = $_POST['nick'];
  4. $email = $_POST['e-mail'];
  5. $pakiet = $_POST['pakiet'];
  6. $kodsms = $_POST['kodsms'];
  7.  
  8. $odbiorca = "xxx";
  9. $tytul = $nick . " xxxx";
  10. $wiadomosc = "##################### <br>#Nick: $nick <br>#E-mail: $email <br>#Pakiet: $pakiet<br>#Kod sms: $kodsms<br>##################### ";
  11.  
  12. if(!empty($nick) && !empty($email) && !empty($pakiet) && !empty($kodsms))
  13.  
  14. } else {
  15. //komunikat w przypadku nie powodzenia
  16. echo 'Wypełnij wszystkie pola formularza';
  17. }
  18.  
  19. {
  20. $mail = mail($odbiorca, $tytul, $wiadomosc, "Content-type: text/html; charset=iso-8859-2");
  21. if ($mail) {
  22. echo "Wiadomość została wysłana poprawnie!";
  23. } else {
  24. echo "Nie udało się wysłać wiadomości";
  25. }
  26. }
  27.  
  28. ?>


A to szkielet formularza:

  1. <form action="wyslij.php" method="post" >
  2. <tr>
  3. <td width="50%" class="row1">
  4.  
  5.  
  6. <tr><b>Nick:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="nick" size="20" maxlength="155"></tr><br>
  7.  
  8. <tr><b>E-mail:</b></tr>&nbsp;&nbsp;&nbsp;&nbsp;<tr><input type="text" name="e-mail" size="20" maxlength="155"></tr><br>
  9.  
  10. <tr><b>Pakiet:</b></tr> &nbsp;&nbsp;&nbsp;<tr><select name="pakiet" size="1">
  11.  
  12. <option value="Brązowy">Brązowy</option>
  13. </select></tr><br>
  14.  
  15. <tr><b>Kod sms:</b> <input type="text" name="kodsms" size="20" maxlength="155"></tr><br>
  16. &nbsp;&nbsp;
  17.  
  18.  
  19. <br><input type="submit" name="submit" value="Wyslij zamówienie"></td>
Flex
Mozesz sprobowac.

  1. if(!isset($_POST['email']))
  2. {
  3. echo "Nie podales emaila!";
  4. }
Niktoś
Używaj pregmatch do walidacji formularza,dodatkowo możesz użyć gotowych funkcji walidacyjnych w jquery aby uatrakcyjnić swoją stronę.
czoko
Cytat(Flex @ 6.02.2012, 19:38:31 ) *
Mozesz sprobowac.

  1. if(!isset($_POST['email']))
  2. {
  3. echo "Nie podales emaila!";
  4. }



Nie sprawdza się zbytnio, bo nawet przy podaniu adresu emial wyskakuję komunikat o nie podaniu, a wiadomość zostaję wysłana.




Cytat(Niktoś @ 6.02.2012, 19:57:28 ) *
Używaj pregmatch do walidacji formularza,dodatkowo możesz użyć gotowych funkcji walidacyjnych w jquery aby uatrakcyjnić swoją stronę.


Tzn? Mógł byś naprowadzić jak to zrobić?
daniel1302
email sprawdzaj tak:




  1. $nick = isset($_POST['nick']) ? $_POST['nick'] : '';
  2. $email = isset($_POST['e-mail']) ? $_POST['e-mail'] : '';
  3. $pakiet = isset($_POST['pakiet']) ? $_POST['pakiet'] : '';
  4. $kodsms = isset($_POST['kodsms']) ? $_POST['kodsms'] : '';
  5.  
  6. if (empty($nick) || empty($email) || empty($pakiet) || empty($kodsms))
  7. {
  8. echo 'Wypełnij wszystkie pola!';
  9. }
  10. else
  11. {
  12. if (false === filter_var($email, FILTER_VALIDATE_EMAIL))
  13. {
  14. echo 'Email jest nie poprawny!';
  15. }
  16. else
  17. {
  18. reszta kodu
  19. }
  20. }
czoko
Cytat(daniel1302 @ 6.02.2012, 20:26:41 ) *
email sprawdzaj tak:




  1. $nick = isset($_POST['nick']) ? $_POST['nick'] : '';
  2. $email = isset($_POST['e-mail']) ? $_POST['e-mail'] : '';
  3. $pakiet = isset($_POST['pakiet']) ? $_POST['pakiet'] : '';
  4. $kodsms = isset($_POST['kodsms']) ? $_POST['kodsms'] : '';
  5.  
  6. if (empty($nick) || empty($email) || empty($pakiet) || empty($kodsms))
  7. {
  8. echo 'Wypełnij wszystkie pola!';
  9. }
  10. else
  11. {
  12. if (false === filter_var($email, FILTER_VALIDATE_EMAIL))
  13. {
  14. echo 'Email jest nie poprawny!';
  15. }
  16. else
  17. {
  18. reszta kodu
  19. }
  20. }



Dzięki wielkie, działa.

A jeszce jedno, co zrobić żeby po wysłanej wiadomości po 2,3 sek po wyświetleniu komunikatu o poprawnym wysłaniu, następował automatyczny powrót do wcześniejszej strony?
daniel1302
Po kilku sekundach? To już JS
Kod
setTimeout('document.location="tutaj_podaj_adres"', ilosc_sekund_razy_1000);


np przejscie na php.pl po 4 sekundach
Kod
<script type="text/javascript">
setTimeout('document.location="http://php.pl"', 4000);
</script>
czoko
Fajnie wszystko działa tylko po nie wpisaniu danym i komunikacie o pustych polach również wraca na tę samą strone co po udanym wysłaniu. Da się ustawić oddzielnie?
Np. żeby cofało na poprzednią stronę?
daniel1302
w PHP możesz dać
Cytat
if (warunek)
{
$adres = 'xxx';
}
else
{
$adres = 'yyy';
}
<script type="text/javascript">
setTimeout('document.location="<?php echo $adres; ?>"', 4000);
</script>
czoko
A żeby cofało nie do konkretnej strony tylko do poprzedniej?
strife
Cytat(czoko @ 7.02.2012, 22:56:40 ) *
A żeby cofało nie do konkretnej strony tylko do poprzedniej?


Z tego co kojarzę to w javascript było to coś z rodzaju window.history.back(-1);
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.