Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Punkty dodawane co sekunde
Arsanael
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 4.06.2009

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


mam problem, nie mam pojecia jak zabrac sie za napisanie skryptu.
Mam w bazie danych wartość która daje uzytkownikowi godzinną dawkę punktów. To udało mi się zrobić ale nie mam pojęcia jak to przerobić tak aby user co sekunde dostawał okresloną wartość z tej godzinnej dawki punktów. wiem ze te godzinną dawkę punktów trzeba podzielić na 3600 bo tyle mamy sekund w godzinie ale teraz nie mam pojęcia jak je zliczać.

I od razu zaznaczam ze odswiezanie strony co sekunde nie wchodzi w grę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
wiem ze te godzinną dawkę punktów trzeba podzielić na 3600 bo tyle mamy sekund w godzinie ale teraz nie mam pojęcia jak je zliczać.

Obliczasz liczbę sekund między wejściami (zapisujesz sobie np. w sesji) i tę liczbę mnożysz przez 1/3600 z punktów godzinnych.
Go to the top of the page
+Quote Post
scanner
post
Post #3





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Już było coś takiego - złocie czy innych zasobach.
Zapisujesz w bazie datę ostatniego wyświetlenia danej informacji (np. karty gracza), po czym przy następnym wyświetleniu liczysz ile odcinków czasu (w Twoim przypadku sekund) minęło od tej zapisanej daty, modyfikujesz to odpowiednim współczynnikiem (punkty), aktualizujesz wpis w bazie, aktualizujesz datę wyświetlenia - i pokazujesz kartę graca na ekranie.
Jeżeli danej karty nikt nie odwiedza prze tydzień - nic się nie stanie - bo prostu punkty naliczą się po tym tygodniu. A dzięki temu nie obciążasz bazy cyklicznymi operacjami.
Go to the top of the page
+Quote Post
sadistic_son
post
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


i najlepiej do tego uzyc daty unixowej, dzialac na niej a tylko na sam koniec, przy wyswietlaniu rezulatatow userowi zamienic unixowa na normalna.
Go to the top of the page
+Quote Post
erix
post
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
i najlepiej do tego uzyc daty unixowej

Do zapisu danych w SQL najlepszy jest właśnie timestamp, a nie integer. ;] Konwersji między formatami możesz dokonać w locie, ale gdzieś czytałem, że lepiej zapisywać w formatach datoznacznikowych.
Go to the top of the page
+Quote Post
Arsanael
post
Post #6





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 4.06.2009

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


a moge prosić o jakiś przykładowy kod? bardzo by mi to pomogło gdyż puki co dalej z tym walcze
Go to the top of the page
+Quote Post
sadistic_son
post
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Też niedawno walczyłem z czymś takim. Potrzebowałem różnicy między dwiema datami (tą w bazie a obecną) podaną w sekundach.

Masz tu moją funkcję:
  1. //ta funkcja oblicza różnicę z dat w formacie: 2009-09-12 16:28:54
  2. function date_difference(){
  3. $data_z_bazy=strtotime($data_z_bazy);
  4. $teraz=date('Y-m-d H:i:s');
  5. $teraz=strtotime($teraz);
  6.  
  7. $roznica=$teraz-$data_z_bazy;
  8.  
  9. return $teraz;
  10. }
Funkcja zwróci ilość sekund między dwiema datami.

Ten post edytował sadistic_son 13.09.2009, 11:11:43
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: 23.08.2025 - 23:33