Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Punkty dodawane co sekunde
Arsanael
post 12.09.2009, 14:46:27
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
erix
post 12.09.2009, 14:52:54
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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
scanner
post 12.09.2009, 14:55:42
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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
sadistic_son
post 12.09.2009, 15:10:52
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.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
erix
post 12.09.2009, 15:23:48
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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Arsanael
post 12.09.2009, 21:38:27
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 13.09.2009, 10:55:37
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


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:04