![]() |
![]() |
![]()
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:
No i teraz na tej podstawie zrobiłem kod, z którym mam problem:
Czy ktoś mógłby mnie naprowadzić? Bo nie widzę różnicy między nimi dwoma, a tylko drugi nie działa... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mogę się mylić ale pętla for zwraca false albo true i zapisuje ją do zmennej $wypelniono po czym zwracasz ją za pomocą return. Zaraz pod pętlą niepotrzebnie zmieniasz wartość zmiennej $wypelniono na true. Bo wtedy zawsze wartość nadana przez pętlę będzie zmieniona na true. Więc usuń to: $wypelniono = true; i powinno działać
![]()
Ten post edytował Zagiewa 27.02.2011, 13:19:23 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 5 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
I nic, niestety
![]() @Zagiewa: Próbowałem, i wtedy zawsze jest "błąd, nie wypełniłeś wszystkich pól" Ten post edytował hyhyhy 27.02.2011, 13:31:50 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj wykorzystać ten kod który przerobiłem, on od razu wypełnia zmienną wartością true albo false w zależności od tego co zwróci warunek
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wynik zwracany przez funkcję sprawdzanie musisz odczytać w programie głównym.
Do tej pory ten wynik "leci w próżnię". Może tak: $wypelniono &&= sprawdzanie(...);czyli "kumulatywne zerowanie" zmiennej $wypelniono? Druga możliwość: w funkcji dodaj: globals $wypelniono; bo tak jak jest to zmienna $wypelniono jest w funkcji zmienną lokalną. Ten post edytował Valdi_B 27.02.2011, 16:34:10 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 5 Dołączył: 6.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dalej nie działa, nie mam pojęcia, co to może być, wygląda to tak:
Ten post edytował hyhyhy 28.02.2011, 19:39:45 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Do sprawdzania czy coś jest RUE czy FALSE używa się operatora === sprawdzającego typ danych.
-------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#8
|
|
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: 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:
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 są 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 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Ja nie widzę nigdzie przypisania tego co zwraca funkcja sprawdzająca. Zresztą lepiej by ciut było nieco inaczej funkcję sprawdzającą zrobić.
Teraz musimy jedynie konkretne tablice sprawdzać. Oczywiście funkcja sprawdzająca będzie wyglądać inaczej jeśli masz inaczej zaprojektowaną strukturę danych, ale to już Twój problem bysobie odpowiednią napisać ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 4 Dołączył: 11.08.2010 Skąd: Inowrocław Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 30 Dołączył: 19.02.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wczorajszy post pisałem z myślą o kontroli odpowiedzi tekstowych (do pola trzeba coś wpisać).
Dopiero teraz skojarzyłem, że w formularzu masz chyba także pytania jednokrotnego wyboru (wybrać jeden z przycisków "radio"). W takich przypadkach kontrolować trzeba z grubsza tak jak miałeś na początku - czy jest dany element w tablicy. Co do pól opcji - chyba nie ma jak kontrolować "czy wypełniono", bo oba warianty (zaznaczono / nie zaznaczono) to jest jakaś odpowiedź. Załączam chodzący przykład z dwoma wariantami kontroli - pól tekstowych i grup pól opcji. Porównaj konwencję nadawania "name" polom, czy masz tak samo u siebie. Warianty kontroli są 2 (a nie 3), bo nie rozumiem o co chodzi z kontrolą samych pytań. Pytania wstawia do formularza Twój skrypt, a użytkownik nic w nich nie zmieni, ma na nie tylko odpowiedzieć. Dlatego uważam, że kontrolować można tylko odpowiedzi. Jeszcze jedno: W swoim skrypcie dodaj print_r($_POST). Jak widzisz jakie dane dostajesz, to łatwiej napisać program ich kontroli. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:53 |