Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obsługa błędów
Forum PHP.pl > Forum > PHP
rafiksq
Jak zablokowac formularz przed wysłaniem, jeśli nie zostaly wypelnione wszystkie pola?
mam np.cos takiego:
  1. <form action='plik.php' mathod=POST>
  2. imie<input type=text name=imie>
  3. <input type=submit name=submit value=submit>
  4. </form>
nevt
google + "JS walidacja formularzy" = tysiące gotowych rozwiązań... w dodatku po polsku...

powodzenia.
rafiksq
A czy jest jakas wada takiego rozwiązania?

  1. <?php
  2. if($submit){
  3. if($plec=='0'){
  4. $false_plec="wybierz plec";
  5. $blad=1;
  6. }
  7.  
  8. if(!$blad){
  9.  header("Location: <a href=\"http://localhost/rec_management/dod_kan/form_02.php");&#092;" target=\"_blank\">http://localhost/rec_management/dod_kan/form_02.php");</a>
  10.  exit;
  11. } 
  12. }
  13. ?>
faster
Pozostawianie walidacji wyłącznie po stronie JS jest niewłaściwe. Stosuje się raczej jako pierwszy krok walidacji formularza dlatego powinieneś przewidzieć obsługę błędów również po stronie serwera czyli skryptu PHP. Z Twojego drugiego posta wynika, że takie rozwiązanie probowałeś zapodać ale chyba nie do końca coś Ci tam wyszło.
Zrób tak, że każdy POST formularza jest kierowany do pliku/akcji/skryptu który sprawdza po stronie serwer poprawność danych. Jeżeli dane są poprawne przekierowuje do kolejnej akcji (proces idzie dalej) można to zrobić właśnie header("Location skrypt_idzie_dalej.php"); exit; a w przypadku walidacji błędnej kieruje do akcji (skryptu), która wyświetla ponownie formularz z informacjami o konieczności poprawienia danych.
Walidację formularza za pomocą JS możesz dodać jako bonus ale nie jako alternatywę.
rafiksq
tak właśnie zrobiłem i powyższy skrypt działa bez zarzuceń oczywiscie mam wiecej niz jedna zmienna smile.gif
nevt
no to ja teraz nie rozumiem co ma piernik do wiatraka... pytanie brzmiało:
Cytat
Jak zablokowac formularz przed wysłaniem, jeśli nie zostaly wypelnione wszystkie pola?

czy wg was skrypt PHP to miejsce do blokowania jakiejkolwiek akcji odbywającej się po stronie przeglądarki ? życzę powodzenia....
rafiksq
Chodzilo mi o to ze mam formularz form1 ktory przetwarza dane w innym pliku <form action='form2.php'> a chcialem zrobic wczesniej walidacje. wiec zrobilem to tak ze dane przesylane sa do tego samego pliku <form action='form1'> i tu nastepuje sprawdzanie czy wszystkie pola sa wypenione jesli tak to za pomoca header przechodze do form2.
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.