Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Punkty
Killerek
post 15.12.2012, 21:30:54
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


Witam, stworzyłem sobie logowanie i chce aby za każde logowanie ale co 24h do kolumny punkty dodawało +10 stworzyłem więc takie zapytanie
  1. $wynik=mysql_query("UPDATE $tabela SET `punkty`=`punkty`+10, ostatnio=NOW() WHERE login='$login'");
i działa lecz za każdym razem gdy się zaloguje dodaje mi +10 punktów a ja chcę aby było co 24h w bazie mam zapis ostatniego logowania w kolumnie ostatnio. Co zrobić? Jak to zrobić?

Ten post edytował Killerek 15.12.2012, 21:31:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Damonsson
post 15.12.2012, 21:33:42
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


...AND (ostatnio+24h) >= NOW()

odnośnie działanie w nawiasie odsyłam do mysql'owego manuala.


W sumie to nie zadziała, bo 'ostatnio' ciągle Ci się aktualizuje po zalogowaniu.

Może odpalaj skrypt CRONem przykładowo o 00:01 i po prostu sprawdzaj, czy dzień wcześniej było logowanie na to konto.

Ten post edytował Damonsson 15.12.2012, 21:37:07
Go to the top of the page
+Quote Post
Killerek
post 15.12.2012, 21:37:45
Post #3





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


Cytat(Damonsson @ 15.12.2012, 21:33:42 ) *
...AND (ostatnio+24h) >= NOW()

odnośnie działanie w nawiasie odsyłam do mysql'owego manuala.


W sumie to nie zadziała, bo 'ostatnio' ciągle Ci się aktualizuję po zalogowaniu.

Może odpalaj skrypt CRONem przykładowo o 00:01 i po prostu sprawdzaj, czy dzień wcześniej było logowanie na to konto.


Czyli ma to wyglądać tak:
  1. $wynik=mysql_query("UPDATE $tabela SET `punkty`=`punkty`+10, ostatnio=NOW() WHERE login='$login' AND (ostatnio+24h) >= NOW()");


czy

  1. $wynik=mysql_query("UPDATE $tabela SET `punkty`=`punkty`+10, ostatnio=NOW() AND (ostatnio+24h) >= NOW() WHERE login='$login'");


czy zupełnie inaczej?

//edit

o CRONie nie mam zielonego pojęcia...

Ten post edytował Killerek 15.12.2012, 21:38:49
Go to the top of the page
+Quote Post
Damonsson
post 15.12.2012, 21:46:50
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Nie, bo ten warunek nigdy nie będzie spełniony, chyba, że ktoś zaloguje się tylko i wyłącznie raz na 24h, jak zaloguje się częściej to ciągle będzie opóźniał ten czas i w sumie to nigdy nie będzie różnicy większej niż 24h.

Jak nie chcesz się brać za Crona, to możesz spróbować zrobić nową kolumnę w tabeli i w przypadku dodania punktów nadawać jej np status 1 i sprawdzać tak:
UPDATE $tabela SET status=1, `punkty`=`punkty`+10, ostatnio=NOW() WHERE login='$login' AND (ostatnio+24h) >= NOW() AND status = '1'

Oczywiście musisz na start jakoś przypisać ten status 1, żeby było się do czego odwoływać, np podczas rejestracji.

(ostatnio+24h) - to jest pseudokod

Go to the top of the page
+Quote Post
Killerek
post 15.12.2012, 21:48:48
Post #5





Grupa: Zarejestrowani
Postów: 89
Pomógł: 2
Dołączył: 15.12.2012

Ostrzeżenie: (10%)
X----


Cytat(Damonsson @ 15.12.2012, 21:46:50 ) *
Nie, bo ten warunek nigdy nie będzie spełniony, chyba, że ktoś zaloguje się tylko i wyłącznie raz na 24h, jak zaloguje się częściej to ciągle będzie opóźniał ten czas i w sumie to nigdy nie będzie różnicy większej niż 24h.

Jak nie chcesz się brać za Crona, to możesz spróbować zrobić nową kolumnę w tabeli i w przypadku dodania punktów nadawać jej np status 1 i sprawdzać tak:
UPDATE $tabela SET status=1, `punkty`=`punkty`+10, ostatnio=NOW() WHERE login='$login' AND (ostatnio+24h) >= NOW() AND status = '1'

Oczywiście musisz na start jakoś przypisać ten status 1, żeby było się do czego odwoływać, np podczas rejestracji.

(ostatnio+24h) - to jest pseudokod



kolumna status odpowiada za to czy konto jest aktywowane czy jest zbanowane itp.

Jak możesz to przyjmij na GG wysłałem zaproszenie.

jak zrobiłem
  1. $wynik=mysql_query("UPDATE $tabela SET status=1, `punkty`=`punkty`+10, ostatnio=NOW() WHERE login='$login' AND (ostatnio+24h) >= NOW() AND status = '1'");
to w ogóle nie dodaje punktów.

Ten post edytował Killerek 15.12.2012, 21:51:50
Go to the top of the page
+Quote Post
vifus
post 15.12.2012, 22:58:22
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 13
Dołączył: 7.04.2012

Ostrzeżenie: (10%)
X----


Cytat(Damonsson @ 15.12.2012, 21:46:50 ) *
(ostatnio+24h) - to jest pseudokod



Ten post edytował vifus 15.12.2012, 22:58:55


--------------------
Zlecenia PHP / MYSQL / JAVASCRIPT / C++ / CSS / HTML na PW
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: 24.07.2025 - 16:12