![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Mam funkcję, która pobiera z bazy danych rekordy z tabeli, a następnie odpowiednio je filtruje. Funkcja działa jak należy, lecz parser wypluwa mi błąd i nie wiem dlaczego (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) . Funkcja jest metodą z klasy php4 i działa w sposób następujący: Pobiera dane z tabeli z bazy danych MySQL i tworzy z nich tablicę, której przykładowa postać to: Kod Array ( [0] => Array ( [projektyID] => 2 [name] => test665 [date] => 0000-00-00 [userID] => 0 [allowed_users] => Array ( [0] => 1 [1] => 3 [2] => 5 ) [filename] => file01 ) [1] => Array ( [projektyID] => 3 [name] => test666 [date] => 0000-00-00 [userID] => 5 [allowed_users] => Array ( [0] => 8 [1] => 4 [2] => 3 ) [filename] => file02 ) ) Dane w polu `allowed_users` w tabeli SQL są rozdzielone średnikami (są to ID użytkowników - liczby), a funkcja robi z tego tablicę (explode). Następnie funkcja tworzy tablicę, w której znajdują się tylko te rekordy, które posiadają w zawartości elementu tablicy (który również jest tablicą) oznaczonej kluczem 'allowed_users' zdefiniowany parametr $userid. Jest to robione za pomocą funkcji in_array(). kod funkcji: (funkcja mysql_fetch_all() tworzy wielowymiarową tablicę z rekordami na podstawie danych z tabeli)
Zaznaczam, że funkcja działa. Jedyne, co mnie intryguje to błąd jaki wypluwa. Jego komunikat jest następujący: Kod Warning: in_array() [function.in-array]: Wrong datatype for second argument in c:\usr\www\speedy\Projects\hcms\classes\classes\projekty.class.php on line 174 "linia 174", to miejsce, w którym znajduje się funkcja in_array(). Nie rozumiem, dlaczego tak się dzieje. Przecież podawany argument jest tablicą, więc jego typ jest poprawny. Poza tym, gdyby nie był, to funkcja by się nie wykonała (a wykonuje się) (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) . Domyślacie się w czym tkwi problem? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 26.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
wychodzisz poza zakres arraya
linia 28: powinno byc tylko `<` poza tym while sprawdza sie w petlach gdzie chcemy ja konczyc gdy zmienna osiagnie jakas zadana wartosc. W przyadku tym lepiej zastosowac petle for. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Racja, dzięki - poprawiłem i zmieniłem na for - teraz jest wszystko w porządku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Pozdrawiam. Ten post edytował Speedy 17.04.2006, 02:41:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:33 |