![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 6.01.2011 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Mam pewien problem, mam oto takie dwie funkcje w klasie:
Funkcja pierwsza SprURL($przyciski) powinna zwrócić jeden parametr (return $Przycisk_on). Dlaczego gdy wywołam ją w innej funkcji (chodzi tutaj o konstrukcje if, $this->SprURL($przyciski) == $this->przyciski[$i]) nie wysyła tego parametru, już późno być może mózg wysiada ;P ale nie wiem dlaczego tak jest, gdy funkcję zadeklaruje bez klasy wszystko jest OK, zostaje zwrócona wartość, dlaczego natomiast w klasie jest zupełnie inaczej? Z góry dziękuje Eldiane |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Zwróć uwagę na linie 26 i 27. W tej chwili skrypt nie wie, czym jest zmienna $przycisk_on i domyślnie nadaje jej wartość null. Po prostu nie przypisujesz zmiennej $przycisk_on wartości, jaką ma zwrócić funkcja SprURL(), co można zrobić w linii 26 w warunku:
Wszystko działa jak należy. W wykryciu błędu mogło pomóc włączenie wyświetlania wszystkich błędów zgodnie z zaleceniami w tym temacie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 6.01.2011 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Zmieniając składnie na taką jaką podałeś nadal występuje błąd, zawsze przechodzi do warunku else... Tak jakby zmienna $przycisk_on była nadal wartością NULL (IMG:style_emoticons/default/thumbsdownsmileyanim.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Po wywołaniu tego:
sprawdź, czym jest zmienna $przycisk_on: Jeśli się okaże, że jej wartość to null, to przeanalizuj funkcję SprURL() sprawdzając przy tym zawartość $_SERVER['PHP_SELF']. Swoją drogą funkcja SprURL() jest źle napisana, bo nie zwraca jakiejś domyślnej wartości, która niekoniecznie musi się znaleźć w tablicy $przyciski. W ogóle całość jest do poprawy, bo logiki w tym nie ma żadnej. Na przykład obie funkcje korzystają z tej samej tablicy przycisków, więc po co je przekazywać, jako parametr. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Twoje przyciski to:
W metodzie SprUrl() masz warunek: A ze strony http://www.php.net/manual/en/function.strstr.php masz to co zwraca funkcja: Cytat Returns the portion of string, or FALSE if needle is not found. Teraz już powinno wszystko być jasne. A poza tematem to metoda SprUrl() powinna przyjmować i sprawdzać tylko jeden przycisk, ponieważ teraz w metodzie lewe_menu() wielokrotnie przechodzisz przez tablice $przyciski. Dodatkowo, jeżeli zostawisz to tak, jak jest teraz to SprUrl() zawsze zwróci (o ile zwróci, bo w tym momencie jest to void) tą samą wartość. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 0 Dołączył: 6.01.2011 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wszystkim za pomoc, jeżeli wystąpią jeszcze jakieś problemy to się zgłoszę =]
//Edit użyłem funkcji strpos, ponieważ przeczytałem że działa ona troszeczkę szybciej od strstr, zawsze lepiej nauczyć się dobrych nawyków, teraz wszystko (chyba) działa już poprawnie, chodź wskazówki byłyby mile widziane (IMG:style_emoticons/default/smile.gif) //Edit Kolejna poprawka, nie chce robić nowych postów więc staram się wciskać wszystkie prace jakie dokonam w jednym temacie, dopóki nie zrobię tego dobrze. Teraz kolejne pytanie - jak nadać wartość zmiennym $przyciski public $przyciski_rek? $Obiekt = new Strona(); $Obiekt->przyciski = array('Button1', 'Button2') $Obiekt->przyciski_rek = array('Reklama1', 'Reklama2') Nie daje pożądanego rezultatu, gdy napisze tak jak wyżej wartość zmiennej $tablica w funkcji URL jest wartością NULL (IMG:style_emoticons/default/thumbsdownsmileyanim.gif) A oto sam kod:
Z góry dziękuje. Eldiane Ten post edytował Eldiane 16.08.2011, 16:41:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 06:33 |