Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie statusu połączenia/żądania
Forum PHP.pl > Forum > Gotowe rozwiązania
sic255
Witam wszystkich!

Mam problem ponieważ chciałbym zrobić coś takiego jak np. na poczta.onet.pl, że w momencie, gdy wykonuje się skrypt lub jest wysyłane żądanie do przeglądarki i oczekiwanie na odpowiedź z serwera, pojawia się obrazek czy tekst "Trwa ładowanie...", a po załadowaniu strony pojawia się jej zawartość. Niestety szukałem już w wielu miejscach, zaczynając od manuala PHP, jednak jedyne co znalazłem to connection_status(), ale to jakoś nie rozwiązało mojego problemu, albo coś źle robiłem. Trzeba jakoś sprawdzić stan wysyłania/odbierania żądania z serwera, ale jak to nie wiem. Proszę o pomoc w tym, jak to zrobić.

Podsumowując: Strona się ładuje - wyświetla się tylko <div>Trwa ładowanie...</div>, a po załadowaniu strony cała zawartość. Chodzi o to, że czasem moje wyniki z MySQL są bardzo długie, a podczas ich "rysowania" za pomocą funkcji while wygląda to nieciekawie i chciałem na ten czas wyświetlić tą właśnie warstę, aby to ukryć.

Z góry dziękuje za wszelką pomoc smile.gif
Pozdrawiam

PS. Proszę admina/moda o przeniesienie tematu. Nie zauważyłem i wystawiłem w złym miejscu, za co przepraszam
erix
Cytat
Chodzi o to, że czasem moje wyniki z MySQL są bardzo długie, a podczas ich "rysowania" za pomocą funkcji while wygląda to nieciekawie i chciałem na ten czas wyświetlić tą właśnie warstę, aby to ukryć.

W wielu skryptach jest to rozwiązane w taki sposób. Przed tabelką wstawiasz warstwę z listą ładowania. Zaraz po pętli np. kod w JS, który ukrywa warstwę.

Możesz jeszcze co każdy krok pętli walnąć flush" title="Zobacz w manualu PHP" target="_manual i coś w stylu paska postępu. winksmiley.jpg Ściągnij sobie net2ftp; tam jest takie rozwiązanie. winksmiley.jpg

PS. Nie myl tego z pocztą onetu, bo tam prawdopodobnie aplikacja jest oparta na ajaksie.
sic255
Hmm zobacze, ale to nie tylko się miałoby tyczyć mysql'a, ale także wszystkich podstron
erix
Możesz robić w ten sam sposób na wszystkich; na początku warstwa, na końcu kodu jej ukrycie.

Tylko czasem bywa tak, że serwer wysyła dane większymi paczkami, dlatego co jakiś czas trzeba użyć właśnie flush" title="Zobacz w manualu PHP" target="_manual. Jeśli nie masz żadnej czasochłonnej pętli, to skorzystaj z np. register_tick_function" title="Zobacz w manualu PHP" target="_manual i np. 1/1000 wywołuj flush" title="Zobacz w manualu PHP" target="_manual. Choć rozsądniejszym rozwiązaniem byłoby przejrzenie konfiguracji serwera, ale wątpię, żebyś miał taką możliwość. winksmiley.jpg
sic255
Słabe to rozwiązanie. Na serio nie można w jakiś sposób sprawdzić kiedy: "wysyłanie żądania", "oczekiwanie na", "zakończono" questionmark.gif
erix
No cóż... Pozostaje Ci tylko AJAX, jeśli chcesz zrobić coś takiego...
sic255
Hmm wiem też, że na gmailu jest coś takiego. Tam jest div... A wiesz może i czy byłbyś tak dobry i powiedziałbyś jak to rozwiązać na AJAXie questionmark.gif
erix
No wczytujesz najpierw szkielet strony (czyli szablon + tabelka bez danych). Potem wczytujesz do niej dane via AJAX (np. JSON/XML, ostatecznie gotowy kod). Przed wysłaniem żądania wypuszczasz komunikat idź na kawę, wysyłasz żądanie do skryptu, aby wypluł potrzebne Ci dane, wstawiasz do tabelki, potem chowasz komunikat.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.