Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak zebrać komunikaty błędów validacji z kilku form
Forum PHP.pl > Forum > Przedszkole
borpaw
Jak zebrać komunikaty błędów validacji z kilku form tzn:

mam np. jedną stronę - formularz, który jest złożony z kilku form, każda forma ma swój buton-submit
oprócz tego jest jeszcze na końcu formularza powiedzmy buton "przejdź dalej" ale nie powinno być można przejść
dalej jeśli wszystkie formy nie są zvalidowane pozytywnie.

I taki zbiorczy komunikat błędów chciałbym wyświetlać na górze strony (często widać takie rozwiązania na stronach)

Czy taka budowa formularza umożliwia zrobienie tego? czy może inaczej trzeba to zaprojektować? Czy przy wielu formach jest to możliwe do zrobienia?
b4rt3kk
Za pomocą PHP - nie, za pomocą JS - tak.
borpaw
najlepiej PHP, ale jeśli się nie da to proszę o inne sugestie
b4rt3kk
Już wspomniałem, w PHP się nie da, bo musisz wysłać formularz, żeby utworzyć zmienne, a kilku form-ów naraz nie wyślesz. Tylko za pomocą JS możesz zwalidować te pola "w locie". Więc moja sugestia - użyj JS (nie mówię stricte o JS, może to być również jakaś biblioteka).
borpaw
Ok dzięki, też dochodzę do tego wniosku,

Czyli zrobić to tak mniej więcej (w pseudokodzie):

  1.  
  2. <form 1></form>
  3. <form 2></form>
  4. <form 3></form>
  5.  
  6. <script>
  7.  
  8. function submitAll(){
  9. submit form 1
  10. submit form 2
  11. submit form 3
  12. }
  13.  
  14. </script>
  15.  


wtedy wyślę formy po kolei i jeśli któraś nie przejdzie walidacji to zgłosi błąd

Czy tak to rozwiązać?
c1chy
nie, jak zrobisz pierwszy submit to reszta się nie wyśle bo strona się odświeży.

chyba że przez submit masz na myśli wysłanie danych za pomocą AJAX to wtedy mniej więcej tak. Tylko najpierw wysyłasz i sprawdzasz odpowiedź jak są błędy to wyświetlasz jak nie ma to wysyłasz drugą itd.
b4rt3kk
Masz dajmy na to takie formy:

  1. <form1><input11><input12></form1>
  2. <form2><input21><input22></form2>
  3. <form3><input31><input32></form3>


Sprawdzasz po kolei wszystkie inputy za pomocą JS i jeśli wszystkie pola zwaliduje poprawnie to lecisz dalej. Jeśli do walidacji nie jest konieczne łączenie się z bazą to i Ajax nie będzie potrzebny.

  1. function checkAll() {
  2.  
  3. var error = 0;
  4.  
  5. if (input11.value != 'costam') error++;
  6. if (input12.value != 'costam') error++;
  7.  
  8. if (error > 0) return false; else return true;
  9.  
  10. }


Coś w ten deseń.
c1chy
Dodałbym tylko, że i tak na samym końcu zanim zapiszesz te dane gdzieś, musisz je zwalidować raz jeszcze po stronie serwera. Na wypadek gdyby użytkownik coś kombinował z javascriptem lub w ogóle go pominął.
markonix
Jaki sens ma tworzenie 3 formularzy skoro one tworzą jedną logiczną całość (wnioskuje po "Przejdź dalej").
To ma tylko sens gdy te 3 formularze są oddzielne - służą do czegoś innego, ale wtedy oczywistym jest, że przy submit walidowany jest ten wysłany, a nie wszystkie.
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.