Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Walidacja Formularza
Forum PHP.pl > Forum > Przedszkole
Adrianeo
Witam,

Mam takie pytanie jako że zaczynam przygodę z php mam takie pytanie jak zrobić walidacje formularza po stronie php, tzn mam formularz w którym mamy do wpisania pole imię i mamy sprawdzić czy pole zostało "wykorzystane" tylko przez litery, zrobiłem już wstępna walidacje w jquery która sprawdza czy pola zostały w ogóle wypełnione, ale teraz chciałbym zrobić bardziej rozbudowane "sprawdzanie" za pomocą php.

Powiedzmy że mamy taki kawałek kodu

  1. <div><label for="name"> Imię: </label></div>
  2. <div><input type="text" id="name" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>"/></div>
  3. <div class="ename error"></div>


czy takie coś jest ok?

  1. <?php
  2. if (preg_match ("[a-z A-Z]", $_POST['name']))
  3.  
  4. { echo "ok";}
  5.  
  6. else
  7.  
  8. { echo "moga wystapic tylko litery";}
  9. ?>


peja1990
Na szybko funkcja:
  1. function validName($value) {
  2. $test = "/^[A-ZĄĘÓŁŚŻŹĆŃ]{1,6}[a-ząęółśżźćń]{1,30}$/";
  3. if(!preg_match($test, $value) || strlen($value) < 2) return echo "Niepoprawnie wypełnione pole !";
  4. return false;
  5. }
Adrianeo
Dzięki za pomoc z tym już sobie poradziłem . A teraz mam jeszcze inne pytanie czy można zrobić tak żeby sprawdzał dane (tzn. właśnie czy w pole imię są tylko litery czy w mailu jest @) po kliknięciu na przycisk wyślij? Od razu mówię że nie jest to żaden projekt na stronę tylko moje wymysły bo tak jak mówiłem wstępną walidację ( czy w ogóle są wypełnione pola) zrobiłem w jquery a teraz chciałbym żeby po stronie serwera sprawdzał czy są poprawnie pola wypełnione i pod każdym z pól wypisywał ok albo bad. Póki co zrobiłem tylko tyle że cały czas wyświetla mi się pod polem informacja że jest dobrze wypełnione dopiero gdy dane pole źle wypełnie i nacisnę wyślij to zmienia się napis na bad. a chciałbym uzyskać coś takiego że na początku pod każdym polem nie ma żadnego napisu dopiero po naciśnięciu buttona wyślij otrzymujemy zwrotną informację czy pole jest dobrze wypełnione czy źle.

Przepraszam z góry jeżeli napisałem nie jasno o co mi chodzi:)
peja1990
Jedna podstawowa zasada: nie spotkałem się chyba jeszcze z czymś czego nie dałoby się zaprogramować tongue.gif
PHP to jeden wielki kombajn możliwości smile.gif

Cytat
A teraz mam jeszcze inne pytanie czy można zrobić tak żeby sprawdzał dane (tzn. właśnie czy w pole imię są tylko litery czy w mailu jest @) po kliknięciu na przycisk wyślij?

Masz na myśli 2 osobne pola (imię i e-Mail) czy jedno pole z możliwością wpisania imienia lub adresu e-Mail bo to różnica.


Ogólnie to nie bardzo rozumiem o co Ci chodzi...
Chcesz połączyć jQuery z PHP czy chcesz samo PHP ?
Z jednej części Twojego postu wynika, że chcesz tak jakby samo jQuery, z drugiej części, że jQuery + PHP a z ostatniej części wynika tak jakby chodziło Ci o samo PHP.
Adrianeo
Już wyjaśniam.

Mamy normalny formularz, z pewna ilością pól do wypełnienia( imie , nazwisko , mail jakies checkbox-y) każde pole jest "odrebne" póki co mam zrobione w jquery żeby sprawdzało czy zostało cokolwiek wpisane w pola(jeżeli nie będą wszystkiego pola wypełnione to nie prześle formularza) a teraz chce zrobić w php aby po naciśnięciu przycisku wyślij( zakładając że wszystkie pola są wypełnione) serwer sprawdził nam czy te pola są prawidłowo wypełnione (tzn. czy w imieniu nie ma np cyfr). Udało mi się zrobić to sprawdzania w php ale na takiej zasadzie ze zanim zaczniemy wpisywać cokolwiek do formularza mamy pod każdym polem napisane że źle zostało wypełnione(jeżeli dajmy na to pole imię wypełnie poprawnie i nacisnę wyślij to napis pod tym polem zmieni się na ok) a chciałbym żeby taka informacja(czy jest dobrze wypełnione czy źle) pojawiała się dopiero bo naciśnięciu przycisku wyślij.
peja1990
So it's fucking simple but I explain it for you tomorrow or latter becouse I'me drunk now. ;D
vifus
A więc robisz tak: ( to tylko przykład )

  1. <?php
  2. if ($_POST['submit']) {
  3. if ($_POST['imie'] || $_POST['nazwisko']) {
  4. echo 'ok';
  5. } else {
  6. echo 'źle';
  7. }
  8. }
  9. ?>
  10.  
  11.  
  12. <form method="POST" action="">
  13. <input type="text" name="imie" value=""/>
  14. <input type="text" name="nazwisko" value=""/>
  15. <input type="submit" name="submit" value="prześlij"/>
  16. </form>
  17.  
Adrianeo
A mam jeszcze pytanie jak zrobić coś w tym stylu. Jeśli dane są poprawne, to je wyświetlamy, a w przeciwnym razie wyświetlamy formularz z zapamiętanymi danymi użytkownika (poza hasłami) i szczegółowymi informacjami o błędach(które pole i jaki błąd)?
aras785
Odp 2: Tworzysz tablice errors i tam wszystko wrzucasz smile.gif
Odp 1: Jeśli tablica errors bedzie pusta po sprawdzeniu to wyświetlasz co tam chcesz, a formularz wyświetlasz jeśli nie jest pusta tablica errors. I wtedy do value w formularzu dajesz np.

  1. <input type="text" name="imie" value="<?php echo((isset($_POST['imie']))?$_POST['imie']:'');?>"/>
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.