![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wszyscy wiemy, że IE7/8 to badziewie jakich mało. Dotychczas myślałem, że te przeglądarkopodobne produkty wtrącają się tylko do HTML i CSS. Nic bardziej błędnego. Okazuje się, że potrafią namieszać również w kodzie PHP.
Mam poniższy kod:
We wszystkich przeglądarkach działa poprawnie. Natomiast w IE7/8 po wejściu do tej funkcji a następnie do bloku warunkowego, zaznaczona przeze mnie linia powoduje wyjście z funkcji bez zgłoszenia błędu czy wyjątku. Jest to tym bardziej dziwne, że Kod $this->_questions[$id] istnieje, a jeszcze bardziej ponieważ kolejna linia usuwająca pytanie z bazy jeszcze się wykonuje! Ale return true już najwyraźniej nie bo funkcja nie zwraca true!Gdy zmienię kod na:
sytuacja nie ulega zmianie. Zaznaczę, że do testów używam emulatorów IE7 na XP (ale różnych i we wszystkich jest tak samo), natomiast IE8 w pełnej wersji również na ten system. Ten post edytował qrzysztof 9.09.2011, 09:13:21 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
IE nie ma nic do php.
I nagle wszystko staje się jasne. Czemu nie robicie głupiego var_dump()? To takie trudne?? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ee raczej się mylisz z tym wtrącaniem się w kod php, raczej chodzi o cache. Odpal debugger i wywołaj gdzieś
$temp = $myObj->deleteQuestion(123); $TEST= 123; (ustaw breakpointa dokładnie dla linii $TEST) sprawdź wartość zmiennej $temp, oczywiście poustawiaj odpowiednie wartości zmiennych. -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
I jeszcze
Temat: Jak poprawnie zada pytanie Wyświetlanie wszystkich błędów, analiza zmiennych i kupa innych. - To podstawy. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
I nagle wszystko staje się jasne. Czemu nie robicie głupiego var_dump()? To takie trudne?? Nie no, aż tak naiwny nie jestem. Wszystko sprawdziłem zanim napisałem.To, że stanie się jasne na końcu nie ulega wątpliwości ale na razie nie jestem bliżej. Zastosowałem var_dump w zalecanym miejscu w trochę zmodyfikowanej formie, aby nie zaciemniać obrazu: Dane wejściowe identyczne: -trzy pytania w obiekcie i w bazie (2423, 2424, 2425) -usuwane: 2425 Rezultat w IE Kod string(4) "2425" array(2) { [0]=> int(2423) [1]=> int(2424) } Rezultat w FF Kod string(4) "2425" array(3) { [0]=> int(2423) [1]=> int(2424) [2]=> int(2425) } -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No i już wiesz czemu nie działa unset - bo nie masz takiego elementu na liscie, który chcesz usunać. Już wiesz, że błedem nie jest unset a Twoja lista - czyż nie jest od razu jaśniej? Bo moim zdaniem jest, już nie krążysz przy unset, które nie jest niczemu winne
ps: zastosowałeś się do porad z linku co ci podałem? Wyswietlanie wszystkich błędów i itp? Cytat Nie no, aż tak naiwny nie jestem. Wszystko sprawdziłem zanim napisałem. Widać nie sprawdzałeś. Jakbyś sprawdził to byś wiedział, że to nie unset.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nospor, sprawa nie jest taka prosta jak się na pierwszy rzut oka wydaje. Zwróć uwagę, że napisałem w pierwszym poście
Natomiast w IE7/8 po wejściu do tej funkcji a następnie do bloku warunkowego, zaznaczona przeze mnie linia powoduje wyjście z funkcji bez zgłoszenia błędu czy wyjątku. P.S. Oczywiście, że tu musi chodzić o jakieś cache/sesje czy cookies. Ja nie sugeruję, że przeglądarka wchodzi mi na serwer i zmienia tam kod ![]() Ten post edytował qrzysztof 9.09.2011, 09:39:36 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
SKoro nie istnieje na liscie twoje ID, to kod nie ma prawa wejść do tego IFa.
Prosty test:
Co się wyświetla? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wyświetla się
Kod string(4) "2425" array(3) { [0]=> int(2423) [1]=> int(2424) [2]=> int(2425) } JUPI, jestem!
-------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dla IE?
To się zdecyduj, co ci wyświetla, bo teraz napisałeś: array(3) { [0]=> int(2423) [1]=> int(2424) [2]=> int(2425) } a wcześniej pisałeś: array(2) { [0]=> int(2423) [1]=> int(2424) } Więc która wkońcu wersja jest prawdziwa? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym się zdecydować, ale to niestety nie ode mnie zależy. Też mnie to dziwi ale takie są właśnie dane na wyjściu.
-------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A jak skasujesz DIE to znowu wyświetlają się tylko 2 elementy?
Znaczy, że Twój kod wykonuje się dwa razy - za pierwszy razem jest ok, a za drugim nie ok ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok, już sprawdzam...
Na razie nie znalazłem na to dowodów: W kodzie mam:
Zmieniłem na:
Dane wejściowe te same i w obu przypadkach wynik Kod Nie posiadasz uprawnień do modyfikowania tego pytania Ten post edytował qrzysztof 9.09.2011, 09:57:14 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
zapytam ponownie:
czy bez DIE dla IE wyświetlają się dwa elementy na liście czy 3? Czy z DIE znowu zaczynają się wyświetlać 3? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Bez die: 2 elementy w tablicy
z die: 3 elementy Oba przypadki odnoszą się do IE -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
=> Kod string(4) "2425" array(3) { [0]=> int(2423) [1]=> int(2424) [2]=> int(2425) } a: => Kod string(4) "2425" array(3) { [0]=> int(2423) [1]=> int(2424) [2]=> int(2425) } ![]() Jak się chcecie we 2 dogadać, to najpierw (do autora) zacznij robić tak, jak pisze nospor, bo inaczej się pokręcicie zaraz... |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Bez die: 2 elementy w tablicy Czyli kod wykonuje ci się wiecej niż jeden raz - to oczywiste i stwierdzone naukowo. Teraz zastanów się czemu.z die: 3 elementy @drPayton bo on var_dump robi na array_keys(). Przecież pisał o tym. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
@drPayton dał jednak dobry trop:
O dziwo jeśli zrobię var_dump($this->_questions) to wszystko działa poprawnie. Sam fakt dodania tej linii do kodu! Wtedy zawsze pokazuje, że są 3 elementy w tablicy. Ale jak usunę tę linię to znowu to samo. To musi mieć jakiś związek z wyjściem. Tak samo z tym die. Jeśli jest coś więcej na wyjściu kodu to wszystko działa. Kod nie wykonuje się dwa razy. Mam w kodzie tylko jedno użycie deleteQuestion i jeśli test, który zrobiłem parę postów wyżej nic nie wykazał to nie ma takiej możliwości. Ten post edytował qrzysztof 9.09.2011, 10:19:21 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Control question:
$this->dbm != $this? Czyli na pewno nie zapętlasz działania tego skryptu? (identyczne nazwy metod, mały błąd przy definicji $this->dbm i kaput...) |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
@drPayton - o zapętlaniu nie ma mowy, choć jeszcze sprawdzę ten wątek.
Dlaczego podejrzewam funkcję unset? Ponieważ to die(), które @nospor zaproponował wykona się jeśli jest przed nią. Umieszczone po tej linii gdzie jest unset() już się nie wykona. Edit: sprawdziłem zmieniając nazwy OBU deleteQuestion na różne. Bez zmian. Zresztą o zapętlaniu nie mogło być mowy. $dbm to obiekt kontaktujący się z bazą i operujący bezpośrednio na niej. Ten post edytował qrzysztof 9.09.2011, 10:28:41 -------------------- Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:18 |