Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przeładowanie Panelu
Forum PHP.pl > Forum > Przedszkole
Ulysess
dobry wieczór mam taki problem otóż mam stronę która zbudowana jest na zasadzie po lewej panel a po prawej treść. w Panelu są wyświetlane jakieś tam dane pobrane z bazy a w treści strony są na ogół jakieś obliczenia. Problem polega na tym że chciałby zrobić (a nie potrafie) tak że gdy w treści strony zostaną aktualizowane dane które w panelu się pojawiają wtedy automatycznie w panelu pokazują się aktualne dane bez przeładowania strony . jak coś takiego zrobić o ile w ogóle się da..
pablo89pl
a jak Ci się teraz te dane "aktualizują"
skorzystaj z AJAXa =]
Ulysess
teraz aktualne dane są dopiero po przeładowaniu strony i tak tylko wtedy gdy w treści nie ma żadnych obliczeń -> aktualizacji.

nie znam niestety AJAXa ale widziałem na paru stronach że jest jakiś skrypt który jest includowany AJAXem i wyświetlany ale co w przypadku gdy user ma wył JS questionmark.gif wtedy panel się nie załaduje chyba co jest jednoznaczne z problemami ponieważ np powinny zostać załadowane jakieś zmienne i dalej przetwarzać a jak taki plik się nie załaduje zmienne nie będą istnieć/nie posiadać odpowiednich danych.
CuteOne
Jeżeli ktoś wyłączył JS to:
- olewasz takich użytkowników - chyba, że lubisz masochistów..
- wstawiasz odpowiedni komunikat "Strona wymaga obsługi JS" i nadal olewasz

ps. procent użytkowników internetu, którzy mają wyłączoną obsługę JS jest naprawdę znikomy i nie warto się nimi przejmować biggrin.gif
Ulysess
hmm nie rozumiecie..

w Panelu pobieram dane o userze i tymi danymi posługuje się w treści strony. jeżeli ten panel umieszcze w innym pliku np test.php i użyje do tego np skryptu:
  1. <script type="text/javascript">
  2.  
  3. function refresh() {
  4. var req = mint.Request();
  5. req.OnSuccess = function () { document.getElementById("panel").innerHTML = this.responseText;},
  6. req.OnError = function () {document.getElementById("panel").innerHTML = "Wystąpił błąd !!! </br>" + this.responseText + "</br>" + req.xmlHttpRequest.statusText ;}
  7. req.Send ("test.php");
  8. }
  9. var ginter=setInterval(refresh, 20000);
  10.  
  11. </script>


to zmienne będą miały tylko zasięg w pliki test.php a potrzebuje żeby miały zasięg globalny. przypisanie tych danych do sesji odpada bo to około 15 danych i na tą chwile już mam 5-6 wartości w sesji trzymanych.
CuteOne
eee ale że o co chodzi? logiczne chyba jest, że plik a.php nie ma prawa oddziaływać na plik b.php jeżeli w jakiś cudownie magiczny sposób nie są połączone [np. poprzez include]
Ulysess
chodzi o to że jeśli użyje rozwiązań z JS musiał bym przebudować całą stron... dlatego że tak jak mówiłem w panelu jest zapytanie które pobiera z tabeli XXX dane usera , dane są przypisywane do zmiennych i w niektórych zakładkach wykorzystywane do obliczeń
CuteOne
Tworzysz plik action.php, który odbiera request wysłany przez AJAXa oblicza wszystko i zwraca wynik czy operacja się powiodła. Następnie w zależności od wyniku operacji zmieniasz "teksty" tak jak wcześniej napisałeś.

  1. req.OnSuccess = function () { document.getElementById("panel").innerHTML = this.responseText;},


Naprawdę nie wiem skąd to zamieszanie
Ulysess
nie znam AJAXa ale jeśli w pliki action.php pobiorę jakieś dane i przypisze do zmiennej np $dane_profil a następnie w index.php 'odczytam' plik action.php dzięki AJAXowi to niestety ale $dane_profil nie będą istnieć.. więc jak mam później dokonywać obliczen / wstawiać w WHERE w zapytaniach $dane_panel skoro taka zmienna nie istnieje/jest pusta questionmark.gif ..
CuteOne
W action.php zapisujesz obliczenia np. do bazy a wyniki zwracasz jako HTML nie jako zmienna w PHP

1. Do action.php wysyłasz request typu index.php?page=action&licz=sumuj&var1=10&var2=12
2. W action odbierasz dane przekazane przez ajax i obliczasz [pamiętaj o walidacji danych winksmiley.jpg]
3. Gdy operacja się powiodła dane zostają zapisane:
- do pliku [txt, xml itd..]
- do bazy [to chyba najlepsze rozwiązanie]
- do sessji
- do cookie
4. Wyniki, które zapisałeś wyświetlasz w podobny sposób jak opisałeś to wyżej [więcej o wyświetlaniu wyników na google bo Twój sposób nie jest najlepszy]

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-2025 Invision Power Services, Inc.