Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzenie na zawartość zmiennej
Forum PHP.pl > Forum > Przedszkole
castagir
Witam

Chciałbym się dowiedzieć jak stworzyć funkcję sprawdzającą czy do formularza zostały wpisane dane. Przede wszystkim chodzi mi o to jak wynik obliczenia funkcji zawrzeć w obecnej zmiennej lub ewentualnie stworzyć nową funkcję jeśli np zamierzony wynik jest dla mnie pozytywny i chciałbym go użyć w dalszym skrypcie.


Póki co stworzyłem takie funkcje. Jedna jest na podstawie funkcji z książki lecz nie działa.
  1. // funkcja sprawdzająca, czy formularz został wypełniony
  2. function wyp_formularz($zmienne_formularza) {
  3. foreach ($zmienne_formularza as $klucz => $wartosc) {
  4. if ((!isset($klucz)) || ($wartosc == '')) {
  5. return false;
  6. }
  7. }
  8. return true;
  9. }
  10. // sprawdzenie, czy została wpisana nazwa witryny
  11. function spr_domena($nwit) {
  12. if ($nwit == '') {
  13. return true;
  14. echo 'Brak wpisanej nazwy witryny';
  15. } else {
  16. return false;
  17. }
  18. }
  19. // sprawdzenie poprawności nazwy witryny
  20. function prawid_domena($nwit) {
  21. if (ereg('www\.[a-zA-Z0-9_\.\-]+\.^)+$'. $nwit))
  22. return true;
  23. } else {
  24. return $nwit;
  25. }
  26. }
  27. // sprawdzenie poprawności adresu email
  28. function prawid_email($eawit) {
  29. if (ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$'. $eawit)) {
  30. return true;
  31. } else {
  32. return false;
  33. }
  34. }


Pozdrawiam
ctom
  1. // funkcja sprawdzająca, czy formularz został wypełniony
  2. function wyp_formularz($zmienne_formularza) {
  3. foreach ($zmienne_formularza as $klucz => $wartosc) {
  4. if ((!isset($klucz)) || ($wartosc == '')) {
  5. return false;
  6. }
  7. }
  8. return true;
  9. }


zakładając, ze przekazujesz do funkcji tablice to przeczytaj sobie na głos (linia po linii) co ona robi .


podpowiedź rozwiązania:

  1. $wymaganePola = array('nazwaPola1', '....');
  2.  
  3.  
  4. $polaWypelnione = function($polaFormularza, $wymaganePola) {
  5. // .... tutaj wyprodukuj swój kod (w przypadku "braku wypełnienia" zwróć FALSE)
  6.  
  7. return true;
  8. };
  9.  
  10. // zakładam, że formularz przekazujesz po POST
  11. if( $polaWypelnione($_POST, $wymaganePola) === false ) {echo 'Nie wszystkie wymagane pola zostały wypełnione';}
castagir
To nadal nic mi nie daje. Akurat właśnie ta funkcja jest z książki. Niestety książka też jak widać jest do nieczego, bo szukałem strony z opisem formularza z którego są brane te '$zmienne_formularza' i jak na złosć jej nigdzie nie ma - rozdział tworzenia formularza rejestrującego po prostu twórca pominął, a niby jest to książka, która za pomocą prostych przykładów ma pomóc nauczyć się tworzyć własne aplikacje php, ale to juz inny temat...

Zacząłem inaczej pisać sprawdzenie tego, czy każde pole w formularzu zostało wypełnione poprawnie. Dla każdego oczekiwanego wyniku zwracam także inną wartość wpisaną w zmienną.


Początkowe zmienne, które mają przypisane wartości za pomocą metody POST powinny być zwykłami ciągami znaków, które wpisuje się w poprzedniej stronie w formularzu.
  1. $nwit = $_POST['nwit'];
  2. $owit = $_POST['owit'];
  3. $eawit = $_POST['eawit'];
  4. $nawit = $_POST['nawit'];
  5. $hawit = $_POST['hawit'];
  6. $phawit = $_POST['phawit'];
  7. $areg = $_POST['areg'];
  8.  
  9. if ($nwit == '') {
  10. return $GLOBALS['w_nwit'] = 'Brak wpisanej nazwy witryny';
  11. } else {
  12. if (ereg('www\.[a-zA-Z0-9_\.\-]+\.^)+$'. $nwit))
  13. return $GLOBALS['w_nwit'] = 'Nazwa witryny została wpisana poprawnie.';
  14. } else {
  15. return $GLOBALS['w_nwit'] = 'Nazwa witryny jest niepoprawna.';
  16. }
  17.  
  18.  
  19. echo $nwit;
  20. echo $w_nwit;


Próbowałem także z 'if' wyciągać nową zmienną, która jest wynikiem sprawdzenia, '$w_nwit', bez wpisywania $GLOBALS, lecz też nie dało żadnych wyników.
ctom
podpowiedź rozwiązania [nr 2] :

  1. $wymaganePola = array('nazwaPola1', '....');
  2.  
  3.  
  4. $polaWypelnione = function($polaFormularza, $wymaganePola) {
  5. // .... tutaj wyprodukuj swój kod (w przypadku "braku wypełnienia" zwróć FALSE)
  6. // 1. iteruj po tablicy $wymaganePola ( foreach)
  7. // 2. sprawdź czy istnieje klucz w $polaFormularza o wartości elementu z $wymaganePola ( isset)
  8. // 3. jeżeli istnieje to sprawdź czy wartość nie jest "pusta"
  9. return true;
  10. };
  11.  
  12. // zakładam, że formularz przekazujesz po POST
  13. if( $polaWypelnione($_POST, $wymaganePola) === false ) {echo 'Nie wszystkie wymagane pola zostały wypełnione';}


sprawdzaniem czy dane pola mają prawidłowe wartości zajmiesz się później (jak zapoznasz się np. z tym )
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.