Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nie kasowanie danych w formularzu
Forum PHP.pl > Forum > Przedszkole
Sublove
Mam dwa problemy

1)

Mam fomularz, dużo w nim pól i ograniczeń.
Kiedy której pole zostanie źle wypełnione to pojawia się komunikat który ustaliłem i ok, ale
wszystkie dane wówczas (po wysłaniu formularza) znikają.
Jak zrobić, żeby po kliknięciu Submit wyświetlał się komunikat że trzeba poprawić któreś pole ale żeby
formularz się nie kasował?

2)

Jak sprawdzić rodzaj wpisanych danych do formularza?
Chcę żeby można było weń wpisać tylko liczby
jareeny
1) Do walidacji danych użyj javascriptu
2) Nie mam pojęcia czy w JS jest odpowiednik phpowej funkcji is_int...
piaseq
Cytat(jareeny @ 25.01.2009, 20:04:15 ) *
1) Do walidacji danych użyj javascriptu

Walidacja javascript jest jak najbardziej ok, ale raczej nie powinna być jedyną formą walidacji, zbyt łatwo jest ją wyłączyć. Dlatego oprócz javascript formularz powinien być sprawdzany również po stronie serwera. Jeśli chodzi o przechowywanie wartości pól po wysłaniu formularza możesz użyć np. sesji lub po prostu uzupełnić pola wartościami z $_POST, jeżeli formularz został niepoprawnie wypełniony.

Jeżeli chodzi o sprawdzanie czy wprowadzona wartość jest liczbą po stronie serwera można użyć is_int, lub intval. W javascript jest to zdaje się parseInt.
redelek
Cytat(Sublove @ 25.01.2009, 19:58:32 ) *
Mam dwa problemy

1)

Mam fomularz, dużo w nim pól i ograniczeń.
Kiedy której pole zostanie źle wypełnione to pojawia się komunikat który ustaliłem i ok, ale
wszystkie dane wówczas (po wysłaniu formularza) znikają.
Jak zrobić, żeby po kliknięciu Submit wyświetlał się komunikat że trzeba poprawić któreś pole ale żeby
formularz się nie kasował?

2)

Jak sprawdzić rodzaj wpisanych danych do formularza?
Chcę żeby można było weń wpisać tylko liczby


Ad 1.
Masz dwa wyjścia, jeśli znasz ajax. Jeśli nie to zapisuj dane do sesji i po sprawie

Ad2.
Ja niestety nie znam JS poza tym przy każdych włamaniach jest pokazywany , że kod JS usuwają i odpalają bez tego.
Bardziej Ajax lub PHP. Zobacz jak wykozystane jest ereg" title="Zobacz w manualu PHP" target="_manual, preg_match" title="Zobacz w manualu PHP" target="_manual.

http://php.koderzy.pl/porady23/W_jaki_spos...dacj%C4%85?.php

Pozdrawiam
Redelek
jareeny
Cytat
Walidacja javascript jest jak najbardziej ok, ale raczej nie powinna być jedyną formą walidacji, zbyt łatwo jest ją wyłączyć. Dlatego oprócz javascript formularz powinien być sprawdzany również po stronie serwera.


Naturalnie, że nie powinna być jedyną walidacją, lecz może być taką hm... nakładką (?), na tą po stronie serwera, która nie pozwalałaby na wykonanie kodu. No a jeżeli ktoś ma wyłączoną obsługe javascript, no to wtedy już ma pecha, i formularz mu się kasuje smile.gif
erix
Cytat
Jak zrobić, żeby po kliknięciu Submit wyświetlał się komunikat że trzeba poprawić któreś pole ale żeby
formularz się nie kasował?

Niech skrypt wyświetlający formularz i go parsujący będzie pod tym samym URL-em; wtedy dane będziesz mógł wczytać z tablicy $_POST

Cytat
Nie mam pojęcia czy w JS jest odpowiednik phpowej funkcji is_int...

isNaN
Pilsener
Możesz też użyć metody, którą ja w takich przypadkach polecam - zapamiętanie wpisanych do formularza wartości przy pomocy cookies - przydaje się podczas pracy z formularzami wieloetapowymi, z zapamiętywaniem kryteriów wyświetlania/wyszukiwania, stanu koszyka etc. - odciążasz bazę. A najprostsza metoda to:

  1. <?php
  2. //odbiór i walidacja danych
  3. if(!empty($_POST)){
  4.   $dane = $_POST['dane'];
  5.   $do_formularza = ' value="'.$dane.'"';
  6.   $error = walidacja($dane);
  7. }
  8. //gdy są error lub nie wysłano formularza to go wyświetlasz
  9. if(!empty($error) || empty($_POST)){
  10.   $tresc_wyjscie .= '<input type="text" name="dane"'.$do_formularza.'/>';
  11. }
  12. ?>


Walidację najlepiej przeprowadzać w PHP - piszesz w tym celu cały szereg funkcji walidujących, np.
  1. <?php
  2. $efekt_walidacji = czy_poprawna_liczba($liczba);
  3. ?>
- funkcja taka powinna zwracać tablicę, która powinna zawierać:
1. TRUE lub FALSE w zależności od tego, jak poszła walidacja
2. Walidowaną zmienną przystosowaną do dodania do bazy etc.
3. Walidowaną zmienną przystosowaną do użycia w formularzu (czyli value="zmienna")
4. Komunikat błędu (jeśli wystąpił)
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.