jacusek
20.11.2010, 17:41:32
Witam.
Mam taki mały skrypcik obsługujący plik formularza html (poniżej część kodu):
$PESEL=$_POST['pesel'];
$x= ($PESEL[0]+$PESEL[1]*3+$PESEL[2]*7+$PESEL[3]*9+$PESEL[4]+$PESEL[5]*3+$PESEL[6]*7+$PESEL[7]*9
+$PESEL[8]+$PESEL[9]*3+$PESEL[10]);
if($x%10!=0){
echo "<script>alert('Numer PESEL jest nieprawidłowy.');</script>"; echo "<script>window.history.go(-1)</script>"; //echo("<script>window.location.href = 'pacjent.html';</script>");
}
Problem polega na tym, że jak PESEL ma nieprawidłowy format to owszem pokazuje się komunikat, ale znika strona. Kiedy zaakceptuje komunikat to formularz (co z niego pochodzą dane) pokazuje się ponownie z wypełnionymi wcześniej danymi.
Czy da się zrobić, żeby strona z formularzem html w ogóle nie znikała?
Ghost_78
20.11.2010, 17:54:24
da sie - sprawdz prawidlowosc pesel przez JS albo AJAX'a
jacusek
20.11.2010, 17:58:54
javascript znam raczej słabo, stąd było moje pytanie. Ewentualnie mógłbym to zrobić w jednym pliku.
Ghost_78
20.11.2010, 18:10:57
jezeli nie zrobisz tego na JS to raczej nie uda sie bez przeladowania
jacusek
20.11.2010, 20:21:53
no właśnie już zauważyłem

. Ale w sumie na razie to tylko ozdobnik mało istotny.
markonix
20.11.2010, 22:48:01
Nie lepiej po prostu wyświetlić błąd nad formularzem?
Nieprawidłowy = wyświetl error (błąd w formie alertu JS jest kiepskim wyjściem) + formularz.
Prawidłowy = wykonaj odpowiednią akcje.
maviozo
22.11.2010, 12:03:44
Pamiętaj, że nawet jeśli zrobisz sprawdzenie danych w JS przed wysłaniem formularza i które może przerwać wysyłanie oraz wyświetlić stosowny komunikat, nadal powinieneś sprawdzić poprawność danych po stronie serwera. JS można wyłączyć, lub obejść bez żadnego problemu. Poza tym osobiście nie przepadam za rozwiązaniem history.go(-1).
markonix
22.11.2010, 12:45:11
Ee... maviozo...
To, że wyświetla błąd w JS to nie znaczy, że weryfikacja także przebiegła po stronie JS..
Zresztą zobacz pierwszy post..
konrados
22.11.2010, 12:52:46
@jacusek
Standardowo to wygląda tak:
jedna strona typu formularz.php w której robisz i formularz i wprowadzenie danych do bazy danych.
na początku sprawdzasz czy są jakieś dane w post/get
są? W takim razie sprawdzasz czy ok, jeśli tak to wyświetlasz komunikat "OK" i na tym kończysz, jeśli coś nie tak, lub nie ma żadnych danych w post/get wtedy idziesz dalej, czyli...:
wyświetlasz formularz.
A Ty zrobiłeś exit() i jakieś history back.
Do tego co napisałem, możesz (ewentualnie) dołożyć sprawdzanie poprawności danych przy onsubmit.
maviozo
22.11.2010, 13:35:24
@markonix
Rozwiązanie z pierwszego postu jest ułomne. Mój post to tylko taka przypominajka, gdyby autor porzucił swoje rozwiązanie i zmienił sposób na przerywanie wysyłania formularza jeszcze na czystym formularzu. Niektórzy mogą o tym zapomnieć, po radości z działania JS
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.