Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Walidacja wielu pól
pitu
post 10.04.2011, 15:58:52
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

Ostrzeżenie: (0%)
-----


Mam pytanie, w jaki sposób sprawdzić kilka pól w formularzu. Po sprawdzeniu wszystkich, jeżeli każde ma wyniki pozytywny wykona zapytanie do bazy.

Mam zrobione wszystko, tylko problem pojawia się podczas sprawdzania. Plik roboczy aktualnie wygląda tak

  1. ...
  2.  
  3. if(!empty($reglogin) && !empty($regemail) && !empty($reghaslo) && !empty($reghaslo2) && $reghaslo == $reghaslo2) {
  4.  
  5. $regloginspr = mysql_query("SELECT Uzytkownik FROM UZYTKOWNICY WHERE Uzytkownik='".$reglogin."';");
  6.  
  7. $regloginwol = mysql_num_rows($regloginspr);
  8.  
  9. if($regloginwol > 0){
  10.  
  11. $regloginzaj = "Podany login jest zajety.";
  12.  
  13. }
  14. else {
  15.  
  16. $reg_user = @mysql_query("INSERT INTO UZYTKOWNICY (Uzytkownik, Email, Haslo, Rejestracja)
  17. VALUES('".$reglogin."', '".$regemail."', '".$reghaslo."', '".$regdata."')");
  18.  
  19. $rejestracja_ok = "1";
  20. }
  21. }
  22. else {
  23.  
  24. if(!empty($_POST["reg"]))
  25. $pola_bledne = "Podane dane sa bledne";
  26. }
  27.  
  28. //Smarty
  29. $smarty->assign("regloginzaj", $regloginzaj);
  30. $smarty->assign("rejestracja_ok", $rejestracja_ok);
  31. $smarty->assign("pola_bledne", $pola_bledne);
  32. $smarty->display($szablon.'/rejestracja.tpl');
  33.  
  34. ...


Chcę jednak wyłapać każdą niezgodność w formularzu osobno, czyli jeżeli jest błędny login to przypisuję błąd, jeżeli hasła się różnią to przypisuję komunikat itp. Nie mam pomysłu jak sprawdzać to osobno i jeżeli wszystkie warunki są ok to dopiero wykona zapytanie.


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
cim
post 10.04.2011, 16:07:34
Post #2





Grupa: Zarejestrowani
Postów: 208
Pomógł: 28
Dołączył: 9.08.2004
Skąd: Stargard

Ostrzeżenie: (0%)
-----


Witam,

może zrób jakąś tablicę z błędami:
  1. $bledy = array();
  2. if (empty($reglogin))
  3. {
  4. $bledy['login'] = 'Podaj poprawny login';
  5. }
  6. ...
  7. if ($reghaslo != $reghaslo2)
  8. {
  9. $bledy['haslo'] = 'Hasła są różne';
  10. }
  11.  
  12. if (count($bledy) == 0)
  13. {
  14. // wszystko ok
  15. }
  16. else
  17. {
  18. // bledy walidacji
  19. $this->assign('bledy', $bledy);
  20. }

A w formularzu:
  1. <input type="text" name="login" value="" />
  2. {if $bledy.login}<span class="blad">{$bledy.login}</span>{/if}

Myślę, że na początek zrobienie czegoś takiego Ci wystarczy, a później będziesz mógł to rozbudowywać w ramach potrzeb (np. napisanie funkcji/metod do walidacji podobnych warunków/pól).

Pozdrawiam


--------------------
errare humanum est
Go to the top of the page
+Quote Post
pitu
post 10.04.2011, 17:04:58
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

Ostrzeżenie: (0%)
-----


Dzięki za pomysł. Działa jak należy.


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.05.2024 - 11:29