Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Punkty dodawane co sekunde
Forum PHP.pl > Forum > Przedszkole
Arsanael
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ę.
erix
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.
scanner
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.
sadistic_son
i najlepiej do tego uzyc daty unixowej, dzialac na niej a tylko na sam koniec, przy wyswietlaniu rezulatatow userowi zamienic unixowa na normalna.
erix
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.
Arsanael
a moge prosić o jakiś przykładowy kod? bardzo by mi to pomogło gdyż puki co dalej z tym walcze
sadistic_son
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.
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.