![]() |
![]() ![]() |
![]() |
![]()
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 ![]() 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ę) ![]() Domyślacie się w czym tkwi problem? ![]() Pozdrawiam. -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
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. -------------------- ..::tHe FoE::..
|
|
|
![]()
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
![]() Pozdrawiam. Ten post edytował Speedy 17.04.2006, 02:41:26 -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 20:00 |