![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Spędziłem ponad godzinę nad tym durnym błędem, więc dzielę się swoim rozwiązaniem. A więc, aby zabezpieczyc swój formularz używałem prostej pętli:
Niestety, kiedy próbowałem przekazac wartosci checkboxow, nie bylo żadnego rezultatu. Wpadłem więc na pomysł, jak rozwiązac ten problem z podobnymi formularzami, przy np. uploadzie plików, gdzie dane takze przekazywane sa jako tablica. Powyzsza petla powinna wygladac tak:
Ten post edytował DiH 9.03.2010, 01:21:18 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Zauważ jednak prostą rzecz... Problemem nie jest tutaj przesyłanie danych POST, tylko Twoja funkcja walidująca. Gdybyś to ją przygotował do odbierania tablicy to nie miałbyś problemu i zapis numer 1 też byłby prawidłowy. Po prostu jesteś nastawiony w niej na to, że MUSI dostać konkretną wartość i nie może to być ani tablica, ani obiekt. Gdybyś to przewidział to mógłbyś nawet zrobić
Tak więc po prostu logika zaszwankowała w Twoim kodzie i nie przewidziała takiej sytuacji. |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
jest to dosc oczywiste rozwiązanie i raczej ogólnie stosowane. No ale skoro chciales sie tak bardzo podzielic to niech bedzie, szczegolnie ze lezy to na przedszkolu.
Zwracaj jednak uwagę na kod jaki dajesz. nie:POST a: $_POST oraz funkcje validateSyntax() i dishtml(). Przedszkolak, ktory znajdzie ten temat zaraz przyleci z tekstem: a mi nie dziala. Pisze ze nie znalazl funkcji validateSyntax() ... Rozumiesz do czego zmierzam? Jak juz dajesz kod dla przyszlych pokolen to dawaj go w calosci, lub unikaj "zaawansowanych" funkcji, ktore wykorzystujesz u siebie i nie chcesz podac ich kodu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
@thek
Słuszna uwaga... skorzystam @nospor Poprawione. Nie "tak bardzo chciałem", a raczej nie znalazłem nic dziwnego z pomyśle, żeby podzielić się rozwiązaniem problemu, który jak chyba zaznaczyłem, nie należał do skomplikowanych. Szczególnie, że nie z takimi problemami ludzie przychodzą. Pozdrawiam i dziękuję za komentarze. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A teraz poparz i pomyśl jak Twoja funkcja mogła by wyglądać gdyby obsługiwała obiekty i/lub tablice:
Pętli i działań wewnętrznych nie będę rozpisywał, bo byś miał gotowca (IMG:style_emoticons/default/winksmiley.jpg) Zazwyczaj w przypadku błędów zwraca się false, ale chciałem byś wiedział, dlaczego i jaki błąd jest. Zwróć tylko uwagę na użycie rekurencji, bo ona tutaj robi dobrą robotę. To taki szkic na szybko, byś w przyszłości miał nad czym się zastanowić (IMG:style_emoticons/default/winksmiley.jpg) Domyślnie mam ustawione przeszukiwanie rekursywne, ale możesz przy wywołaniu dać false i wtedy tylko pojedynczą wartość sprawdzi. Możesz także kombinować z wyciąganiem sprawdzenia $recursive jako pierwszego by nieco próbować przyspieszać funkcję w przypadku skalarów (masz wtedy 1 if zamiast czekać aż sprawdzi czy jest to tablica lub obiekt). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 02:01 |