Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Php +Mysql] Dodanie punktów
Forum PHP.pl > Forum > PHP
RawBlue
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
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
Dorzucasz do bazy pole points_time i:

  1. $now = time();
  2. $dodajemy = 1 * 86400; // co ile dni ma dodawac
  3. if ( ($row['points_time'] + $dodajemy) < $now )
  4. {
  5. $sql = "UPDATE `users` SET punkty = punkty+1, points_time = ".$now." WHERE id = X";
  6. $result = mysql_query($sql)
  7. or die("error");
  8. echo "Dodano 1 punkt";
  9. }
  10. else
  11. {
  12. echo "punkty juz dzis przydzielono!";
  13. }
lobopol
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
Dziękuję problem rozwiązany
marins
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.