![]() |
![]() ![]() |
![]() |
--Marian-- |
![]() ![]()
Post
#1
|
Goście ![]() |
Witam,
mam problem z walidacją formularza. Stworzyłem formularz który dodaje mi wydarzenia do bazy. Problem w tym, ze nawet jak nic nie wpiszę do formularza, to mi wysyła go i wyswietla komunikat że dodało wydarzenie do bazy, czego oczywisscie fizycznie nie wykonało. Jeśli podam wszystkie pola, to wydarzenie normalnie jest dodawane do bazy, chciałbym też mieć możliwość wypełnienia nie wszystkich pól formularzai żeby dodawane zostało wydarzenie do bazy z mniejszą iloscią danych. Przesyłam kody: [formularz]
[Obrabianie formularza]
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
W którym miejscu pojawia się problem?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Przycisk submit ma być Twoim warunkiem wywołania skryptu walidacji. Tak więc dodaj do tego submit name="cos tam" i w pierwszym warunku zamiast: wstaw po za tym sugeruje robić to za pomocą metody POST Ten post edytował gitbejbe 19.06.2013, 06:17:29 |
|
|
--Marian-- |
![]()
Post
#4
|
Goście ![]() |
Właśnie problem, polega na tym, że nie mogę zlokalizować w tym kodzie, miejsca błędu.
W tym przypadku , akurat musze wykorzystać metodę _GET. Dodałem też dodatkową instrukcję if sprawdzającą przycisk i dalej mam ten sam problem, że wysyłam pusty formularz. Chciałbym właśnie, aby mi przełądowało stronę, na ponowne wprowadzenie danych do formularza. Nie wiem jak sobie z tym poradzić :/ |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
przecież napisałem Tobie....
Twój problem to za każdym razem to ten warunek u Ciebie decyduje o tym, co robić dalej. Po za tym, zobacz jak wygląda URL po wysłaniu pustego formularza. jeśli sa w nim wypisane zmienne bez wartości to się nie dziw, ze spełnia sie powyższy warunek bo zmienne GET istnieją (łał) Kolejnym błędem, jest sam ten skrypt. Nie chciałbym natrafić na "coś takiego", tym bardziej podawać w takim czymś swoje dane. nie wiem tez dalczego napisałeś, że masz problem z walidajcą formularza, skoro Ty nic tak naprawdę nie walidujesz. Kompletnie nic nie sprawdzasz, po za tym czy istnieją zmienne GET. Napisałbym,żebyś przewertował manuala lub przeanalizować gotowe skrypty walidacji ale zrób do końca ten skrypt po swojemu a z czasem sam zobaczysz co to za potwór i może zmotywujesz się do większego wysiłku ;d edit: własnie... jeszcze jedno. Sprawdz - bo ja nie mam juz czasu a sam nie pamietam bo dawno dawno nie używałem GET, czy zmienne tworzą się w URL mimo tego, że sa puste. Jeśli tak to jest twój problem. Zamiast warunków sprawdzających czy te zmienne istnieją, sprawdz lepiej czy te zmienne posiadaja odpowiednie dane i po kłopocie. Tak powinieneś zrobić, skoro piszesz, że jest to "walidacja" ;p po zakończeniu dodania do bazy, wstaw header("location: jakis_plik.php"); Mimo wszystko radziłbym Tobie zmienić GET na POST. Ten post edytował gitbejbe 19.06.2013, 14:00:08 |
|
|
--Marian-- |
![]()
Post
#6
|
Goście ![]() |
Fakt, masz rację, trochę źle sprecyzowałem swój problem.
W takim razie zabieram się do roboty (IMG:style_emoticons/default/smile.gif) A powiedz mi, można jakoś sensownie zrobić sprawdzanie pól w formularzu, ale tak, że nie wszystkie pola muszą być wypełnione aby formularz został wysłany poprawnie ? Jeśli tak, to czy mógłbyś, oświecić mnię trochę swoją wiedzą ? Pozdrawiam Marian |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Możesz sprawdzać poprawność danych jeśli określone pole nie jest puste. Tj. jeśli jest to dajmy na to nr telefonu, to czy wpisano tylko cyfry, czy wpisano ich odpowiednią ilość, itp. No i jeśli nie chcesz dodawać pustych wartości to ustal, które pola minimalnie muszą być wypełnione.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
tak jak napisał kolega wyżej.
To ty ustalasz co ma zawierać pole i które z nich ma być obowiązkowe do wypełnienia. Walidacja to mechanizm składająca się z 3 głównych kroków - pobranie danych - sprawdzenie danych - wysyłka danych - czy jak to innaczej ująć ;p lecąc od początku walidacje zawsze zaczynaj od warunku. Najlepszym z nich jest sprawdzenie czy został wciśnięty submit. Najprostrze i najlepsze rozwiązanie. Dopiero w tym warunku pobierasz dane i robisz reszte rzeczy. Każde pole sprawdzaj pod względem dozwolonych znaków. Email ma być emailem, tel ma być tel a imie czy nazwisko ma nie być puste, nie krótsze niż 3 naki i nie dłuższe od 20 + zawierać tylko litery. Do tego przydadzą Ci się wyrażenia regularne. Dopiero jak wszystko jest ok, przechodzisz do zapisu do bazy danych i kończysz walidacje. wskazówka: przed zapissem do bazy danych musisz postawić warunek w którym sprawdzisz czy wszystkie dane z formularza są poprawne. Wszystkie informacje o nieprawidłowym wypełnieniu formularza zapisuj do jednej zmiennej, łatwiej Ci będzie wyświetlić błędy i stworzyć odpowiedni warunek. np: stworz zmienną np $error = ''; i teraz każdy błąd dodawaj w ten sposób : $error.= 'tresc bledu<br>'; jeśli chcesz wyświetlić wszystkie błędy dajesz poprostu echo $error; Też kiedyś byłem początkujący i pamietam, ze to bardzo mi pomogło, bo pisałem mase niepotrzebnych warunków i zmiennych ; ) i przed dodaniem do bazy dajesz warunek if(empty($error)) { //kod zapisu do bazy } edit: mały prezent ode mnie. Sprawdzenie maila ;p pewnie i tak byś szukał po googlach if(preg_match('/^[a-zA-Z0-9.\-_]+\@[a-zA-Z0-9.\-_]+\.[a-z]{2,4}$/D', $email) == false) { $error.='Błędny adres email'; } Ten post edytował gitbejbe 19.06.2013, 18:11:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:29 |