![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jakie macie sposoby na sprawdzanie wymaganych pól w formularzu? Kombinuje i nie wiem czy dobrze robię - już nawaliłem stado IF'ów ale wydaje mi sie to mało optymalne i pewnie jest jakiś lepszy sposób.
Chodzi mi tu konkretnie o sprawdznie typu: tytuł jest wymagan -> jeśli cena jest podana to musi być numeryczna -> musi być podana forma kontaktu (jesli mail to musi być poprawny - jeśli telefon to musi być numeryczny) -> w treści musi być znaków max 500 -> itd. itd. A jeśli któryś warunek jest niespełniony to pokazuje mi który i przekazuje mi zmienną z konkretnym nieprawidłowo wypełnionym polem abym mógł wyświetlić użytkownikowi info. Macie jakieś swoje sposoby? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Tak na szybko to błędy zapisuje do tablicy np. $errors i potem za pomocą while je wyświetlam.
Tak na porządnie to można napisać sobie klasę do walidacji - jest tutaj na forum bo się na niej wzorowałem przy pisaniu swojej. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 763 Pomógł: 117 Dołączył: 15.03.2010 Skąd: void Ostrzeżenie: (0%) ![]() ![]() |
Najprościej?
Dla każdego pola robisz sprawdzenie (instrukcje warunkowe) według określonych zasad... Mało optymalne rozwiązanie na większą skalę ale wygląda chyba najlogiczniej (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Najprościej i chyba najbezpieczniej jest użyć jakiegoś frameworka który ma wbudowaną obsługę formularzy z validatorami. Osobiście polecam Symfony (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Najszybciej? Uzywaj frameworków z wbudowaną obsługą walidacji. Możesz też przeglądać klasy obsługi formularzy typu Formo w Kohanie. A możesz także wszystko zrzucić na swoją klasę. Ja to przykładowo robię podobnie nieco do Formo. Tworzę obiekt/tablicę, w którym przechowuję elementy formularza i dotyczy to także elementów walidacji. Przykład?
Zobacz sobie jak definiuję pola, co one zawierają. Potem już "tylko" w pętli każde pole podesłane POSTem sprawdzam. Jeśli jest 'required' => true, to musi być wypełnione, bo inaczej leci info do errors tego pola. Z filtrami i validatorami jest podobnie. Jeśli tablica ta coś zawiera dla danego pola... wykonuję to. Nie będę tu całego kodu wrzucał. To co interesuje Ciebie, mieści się pod fragmentem, który u mnie jest mniej więcej tutaj. Wyświetlenie całości elementów to po prostu w takim układzie bajka (IMG:style_emoticons/default/smile.gif)
EDIT: Jedynie nie robiłem w kodzie obsługi RADIO, bo nie używam niemal nigdy tej kontrolki (wolę SELECT). Ale mając to co dałem, dopisanie obsługi jest już dziecinnie proste. I nie dałem oczywiście tego jak waliduje czy filtruję dane. Jednak na podstawie kodu chyba nie jest potrzebne to... Łatwo wywnioskować co robię... Oczywiście chętni mogą zmodyfikować to pod obsługę multi-checkbox i multi-select do własnych potrzeb. Byłbym zapomniał... Mam w kodzie kilka klas CSS, które określająpewne właściwości. required to oczywiście oznaczenie diva z polem jako wymagane (ja ustawiam kolor tła), a w dodatkowym akapicie, obok kontrolki, mam komunikat z systemu generowania, który pokazuje albo błąd pola w wyniku walidacji, albo informację o nim, czyli co to za pole i informacje co można tam dać itp. Jako optymalizację można oczywiście "required" z osobnego pola przrzucić do "validation", ale to zależy od wygody (IMG:style_emoticons/default/smile.gif) Całość jest zresztą prosta do modyfikacji i szczerze mówiąc to jest tylko kawałek szkieletu skryptu, który cały czas u mnie "mutuje". Tu dodam obsługę klas do pól w generowaniu kodu html, tutaj jakąś inna kontrolkę (właśnie dodaję textarea, którego braku nie zauważyłem (IMG:style_emoticons/default/wink.gif) ), tam nieco zmodyfikuję coś innego. Ostatecznie tak naprawdę to co dałem jest tylko szkicem większym, z którego nieco już kumający koderzy sobie i tak zrobia co chcą, obudują ładnie w klasy, dopiszą metody obiektowe i wstrzykną klasy filtrów oraz walidatorów, zamiast tak jak ja "na pałę" (IMG:style_emoticons/default/biggrin.gif)
Powód edycji: [thek]: A taki drobiazg dopisać :)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 544 Pomógł: 5 Dołączył: 18.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
God bless you thek! Jeszcze całego kodu nie przeanalizowałem ale na pewno coś z niego wyciągnę (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Poanalizuj, bo kod jest mocno uproszczony i nie wszystko mi się chciało wklejać. Poza tym jak wspomniałem, jest to zaledwie szkic rozwiązania. Wiele rzeczy można w nim dopisać, uzupełnić, poprawić. To co Ci potrzebne, to zliczanie na samym końcu ilości pól z errorami i od tego uzależniać czy formularz wysyłamy, czy może walimy informację o poprawieniu błedów. Najprościej można to zrobić dodając sobie jeszcze zmienną licznika, początkowo ustawionego na 0 i zwiększanego o 1 tam, gdzie do $register_form[$k]['error'] coś przypisujemy. Ale można też po prostu zliczać ile pól ma zmienną $register_form[$k]['error'] niepustą. Efekt ten sam. Pobaw się ze szkieletem tego co dałem, bo to naprawdę prosty do edycji i w miarę elastyczny kod strukturalny. Jego edycja powinna Ci nieco rozjaśnić jak prosto można swój własny systemik obsługi formularzy w ten sposób zrobić (IMG:style_emoticons/default/smile.gif) Zauważ, że nawet submit jest polem formularza i on też jest dodawany jako kontrolka, przykładowo w postaci:
Bawcie sie ile chcecie ludziska, bo młodym stażem się zapewne taki kod "poligonowy" do testowania przyda (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:53 |