Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Php +Mysql] Dodanie punktów, Mały skrypt
RawBlue
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.02.2012

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


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ś?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
vonski
post
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


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ą.
Go to the top of the page
+Quote Post
Majkelo23
post
Post #3





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

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


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. }


Ten post edytował Majkelo23 24.02.2012, 20:55:03
Go to the top of the page
+Quote Post
lobopol
post
Post #4





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


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
Go to the top of the page
+Quote Post
RawBlue
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.02.2012

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


Dziękuję problem rozwiązany
Go to the top of the page
+Quote Post
marins
post
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 4
Dołączył: 12.07.2003

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


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?
Go to the top of the page
+Quote Post
bonifacy
post
Post #7





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 28.02.2012

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


dokładnie

dokładnie
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:07