Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]sprawdzenie, czy wypełniono pola formularza - problem
hyhyhy
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 5
Dołączył: 6.02.2011

Ostrzeżenie: (0%)
-----


Mam taki problem: mam stronę z dość obszernym formularzem (generator quizu) no i chciałbym uniemożliwić pozostawienie pustych pół. Mam dwa kody: jeden działający i jeden nie. Ten drugi dotyczy większej liczby elemtntów, ale wydaje mi się taki sam, czy ktoś mógłby mi podpowiedzieć, co jest nie tak? Dodam, że problem jest taki, że IF się nie wykonuje (tzn zachowuje się tak, jakby $wypelniono zawsze mialo true, nawet kiedy pola są kompletnie puste)

kod, który działa:
  1. $wszystko_wpisane = true; //-------
  2. for ($x=0;$x<10;$x++)
  3. {
  4. trim($tekst[$x]);
  5. $tekst[$x] = mysql_real_escape_string(htmlspecialchars($tekst[$x]));
  6. if (empty($tekst[$x]) == true) {$wszystko_wpisane = false;}
  7. }
  8.  
  9. if ($wszystko_wpisane == false) {echo 'Blad! uzupelnij wszystkie pola!';}
  10. else { //jesli uzupelniono, dalsze instrukcje


No i teraz na tej podstawie zrobiłem kod, z którym mam problem:

  1. function sprawdzanie($liczba_obiektow, $obiekt)
  2. {
  3. for ($q=0;$q<$liczba_obiektow;$q++)
  4. {
  5. if (empty($obiekt[$q]) == true) {$wypelniono = false;}
  6. }
  7. return $wypelniono;
  8. }
  9.  
  10. $wypelniono = true;
  11. sprawdzanie($liczba_pyt, $pytanie[$q]);
  12. sprawdzanie($liczba_odp, $odpowiedz[$q]);
  13. sprawdzanie($liczba_wynik, $wynik[$q]);
  14.  
  15. if ($wypelniono == true)
  16. { dalsze instrukcje - wykonują się zawsze, nigdy nie wchodzi else}
  17. else { echo 'Blad, uzupelnij wszystkie pola!';}


Czy ktoś mógłby mnie naprowadzić? Bo nie widzę różnicy między nimi dwoma, a tylko drugi nie działa...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Valdi_B
post
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Jeszcze jedno spostrzeżenie co do Twojego kodu:
Zaraz po deklaracji funkcji sprawdzanie() masz jej wywołanie:
  1. sprawdzanie($liczba_pyt, $pytanie[$q]);
Zwróć uwagę, że zmienna $q jest to zmienna lokalna w powyższej funkcji, a tu - już nie jest określona.

Poza tym: Skoro w funkcji przeszukujesz tablicę obiektów, to parametrem do tej funkcji powinieneś podać całą tablicę, a nie jej któryś obiekt.
Spróbuj taki kawałek kodu:
  1. function sprawdzanie($liczba_obiektow, $obiekt) {
  2. globals $wypelniono;
  3. for ($q=0; $q<$liczba_obiektow; $q++) {
  4. if (empty($obiekt[$q])) {
  5. $wypelniono = false;
  6. }
  7. }
  8. }
  9.  
  10. $wypelniono = true;
  11. sprawdzanie($liczba_pyt, $pytanie);
  12. sprawdzanie($liczba_odp, $odpowiedz);
  13. sprawdzanie($liczba_wynik, $wynik);
  14.  
  15. if ($wypelniono) {
  16. <obsługa przypadku "OK">
  17. } else {
  18. echo 'Blad, uzupelnij wszystkie pola!';
  19. }

Edit:
Zakodowałem "podobny" formularz, z kilkoma polami:
<input type="text" name="tt[]" />
i co widzę w $_POST:
1. Dostaję tablicę $tt.
2. Pola które w formularzu zostawiłem puste w tej tablicy, ale z pustą treścią.

Wniosek:
W pętli nie korzystaj z empty() (bo element tablicy istnieje).
Sprawdzaj długość stringu w tym elemencie - strlen($obiekt[$q]);

Ten post edytował Valdi_B 2.03.2011, 17:05:12
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.08.2026 - 20:43