Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie energii co 5 minut
Maciek316
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Witam, mam takie pytanie bardziej teoretyczne.
Próbuje stworzyć skrypt który najpierw sprawdza czy energii jest mniej niż maksimum i potem dodaje co 5 minut aż do osiągnięcia maksimum.
Chcę zrobić to tak żeby działało zarówno gdy użytkownik jest zalogowany(odlicza czas w js) oraz gdy jest wylogowany.
Jak mogę takie coś osiągnąć?

Zrobiłem wersje js:
  1. function energia(teraz, max,i,user) // (aktualna energia, maksymalna energia, czas odnowienia)
  2. {
  3. if(teraz < max)
  4. {
  5. var minut = Math.floor(i/60); //ilosc minut
  6. var sekund = Math.floor(i - minut * 60); // ilosc sekund
  7.  
  8. if(i > 0)
  9. {
  10. $("#energy_timer").text("+1 za "+dodajzera(minut)+":"+dodajzera(sekund)); // do danego diva wjebuje czas - dodajzero jest w licznik.js
  11. i--;
  12. setTimeout("energia("+teraz+","+max+","+i+","+user+")",1000);
  13. console.log(i);
  14. }
  15. else
  16. {
  17. $("#energy_timer").text(""); // jak sie odliczanie skonczylo to zeruje diva
  18. teraz++;
  19.  
  20. var request = $.ajax({ //wysyla energie do danego uzytkownika
  21. type: 'POST',
  22. url: 'polub.php',
  23. data: { energy: teraz, user_sql: user } })
  24. .done(function(data) {
  25. $("#energia").text(teraz+"/"+max); // wypisze nowe wartosci
  26. $("#energia_progress").animate({width: teraz/max*109,},500); // zanimuje progress bar zebys ie ladnie przesunal
  27. energia(teraz,max,20,user); // sprawdzi czy sa jeszcze jakies punkty do dodania
  28. })
  29. .fail(function() { alert("error"); }) // jesli sie przeslanie danych nie uda zwraca blad
  30.  
  31. }
  32. }
  33. }

Ale działa jedynie gdy użytkownik jest zalogowany.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
ohm
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


Zapisujesz stan kiedy ostatnio dodawałeś energię, np cykl o 13:30, użytkownik ostatnio aktywny był o 13.31 po loguje się chwilę po 14:00, po zalogowaniu/odświeżeniu strony obliczasz różnicę, która wynosi w tym przypadku 29 minut, dzielisz to na 5 (jako że co 5 minut) i masz 5 cykli pominiętych. Zapisujesz że stan został zaktualizowany w tym cyklu (cykl na godz. 14).

Taki zarys, ogólnie do dopracowania, ale mam nadzieję że naprowadziłem na koncepcję.
Go to the top of the page
+Quote Post
Maciek316
post
Post #3





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


A jak to polaczyc z js'em odliczajacym w czasie rzeczywistym?
Bo jesli uzytkownik zostawi strone w tle, to js bedzie odliczal i sam dodawal, a nie odswiezajac ne dostaniemy nowego "ostatniego zalogowania" i po odswiezeniu dostaniemy energie zarówno ze skryptu js jak i z php.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


w JS wyświetlasz tylko licznik wirtualny. To po stronie serwera musisz wyliczać aktualną wartość.
Do JS przekazujesz aktualną wartość i rozpoczynasz liczenie i zmieniasz tylko html, przy każdej akcji wykonanej po stronie frontu i tak musisz przeliczać to po stronie PHP.

Jeśli będziesz wysyłał Ajaxem to można sobie dowolnie zwiększać licznik i dowolnej osobie...
Go to the top of the page
+Quote Post
Maciek316
post
Post #5





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


Jak obliczyć różnicę pomiędzy czasem ostatniego logowania a aktualnym, jeśli czas ostatniego logowania aktualizuje przy odswiezeniu strony?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




roznica = czas_aktualny - czas_ostatniego_logowania
Go to the top of the page
+Quote Post
Maciek316
post
Post #7





Grupa: Zarejestrowani
Postów: 93
Pomógł: 0
Dołączył: 31.03.2012

Ostrzeżenie: (0%)
-----


no tak, tylko ten czas_ostatniego_logowania aktualizje sie przy każdym odświezeniu strony, stąd czas_aktualny=czas_ostatniego_logowania
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Masz liczyc roznice miedzy czasem aktualnym a ostatnim zapisem do bazy
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 12:31