RawBlue
24.02.2012, 20:38:25
Witam
Dopiero co zaczynam wtajemniczać się w php oraz mysql i mam takie pytanie.
W bazie danych posiadam tabele "uzytkownicy" a w niej rekordy: "id", "login", "punkty", "ip"
Potrzebuje teraz napisać mały skrypt znajdujący się na podstronie x.php, który automatycznie po wyświeleniu tej strony dodaje 1 punkt użytkownikowi który by na tą stronę wszedł z ograniczeniem do jednego razu na 24h
Łopatologicznie ujmując wchodzę na podstronę x.php otrzymuję 1 punkt, wchodzę drugi raz po 24h otrzymuje 2 punkt, a wejde wcześniej niż 24h wyskakuje komunikat, że punkty na dzisiaj już zostały przydzielone.
Strona ta będzie dostępna tylko dla zalogowanych uzytkownikow ale sesje logowania już posiadam.
Pomoże ktoś?
vonski
24.02.2012, 20:49:18
Możesz to np. rozwiązać w taki sposób, że dorabiasz w bazie pole, w którym będzie przechowywana data ostatniego dodania punktu danemu userowi i na tej podstawie określasz - czy przyznać kolejny punkt czy wyświetlić komunikat, że użytkownik w ciągu ostatniej doby dostał już punkt. Oczywiście po przyznaniu punktu update-ujesz dane pole aktualną datą.
Majkelo23
24.02.2012, 20:51:06
Dorzucasz do bazy pole points_time i:
$dodajemy = 1 * 86400; // co ile dni ma dodawac
if ( ($row['points_time'] + $dodajemy) < $now )
{
$sql = "UPDATE `users` SET punkty = punkty+1, points_time = ".$now." WHERE id = X";
}
else
{
echo "punkty juz dzis przydzielono!"; }
lobopol
24.02.2012, 20:51:28
Logikę ci podam:
-dodaj sobie do tabeli pole: data_wejscia timestamp na updacie current_timestamp
-Użytkownik wchodzi na stronę
-jeżeli zalogowany to pobierz z bazy data_wejscia tego użytkownika (select data_wejscia where id= id usera)
-sprawdź czy data_wejscia <= teraz-24 godziny
-jeżeli tak dodaj punkt (update punkty = punkty+1)
-jeżeli nie wyświetl informacje
RawBlue
25.02.2012, 09:36:47
Dziękuję problem rozwiązany
marins
25.02.2012, 11:59:05
A ja bym polecał zamiast
punkty = punkty + 1
zrobić dodatkowa tabelę
user_points
id | user_id | datetime | points
i tam trzymac wszystkie punkty.
Sumowanie:
SELECT SUM(points) AS pkt FROM `user_points` WHERE user_ID='{ID}'
Zaletą jest to, iz mamy historię punktów - może na tym etapie być nieprzydatne, ale kto wie jak się rozwinie skrypt?
bonifacy
28.02.2012, 00:26:21
dokładnie
dokładnie
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.