Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie daty przy dodawaniu punktu
Forum PHP.pl > Forum > PHP
pr0woKator
Cześć wszytkim,

Mam taki problem, a w zasadzie zagwozdkę przy sprawdzaniu czy dany adres IP był przez ostanie 24 godziny.

Tworzę skrypt który ma za zadanie dodać punkt danemu userowi gdy dana osoba wejdzie w jego link z getem, ale tylko raz na 24 gdy IP się powtaża.
Obrazwowo

Sprawdzam czy IP jest w bazie, jeżeli nie to dodaje + Data NOW(); i dodaje punkt,
Sprawdzam czy IP jest w bazie, jeżeli tak to sprawdzam czy minęło 24 godziny od ostatniej wizywy, jeżeli tak dodaje punkt, jeżeli nie - nie się nie dzieje.


Nigdy nie wykonywałem operacji na datach i nie mam pojęcia jak to napisać. Może macie jakieś gotowe rozwiązania na sprawdzanie unikalności IP w danym dniu?
Z góry dziękuję za pomoc.

Wpadłem na takim pomysł:

  1.  
  2. $data_dodania = "2012-07-27";
  3. $aktualna_data = date("Y-m-d");
  4.  
  5. if ($data_dodania != $aktualna_data){
  6.  
  7. // skrypt dodaje punkt
  8. } else {
  9.  
  10. //skrypt nie dodaje punktu
  11. }


co sądzicie?
erix
A o indeksie UNIQUE słyszał? [;
lukaskolista
Dokladnie tak. PHP sam wykrywa daty i je porownuje (nie ma do tego jakiegos odrebnego mechanizmu).

erix:
index unique jest bez sensu z prostego powodu: on nie chce za kazdym razem dodawac nowego rekordu, tylko update'owac jeden. Poza tym opieranie sie obledy zwracane przez baze danych jest bez sensu.
pr0woKator
Czyli sposób jaki "zaryzowałem" będzie ok?
lukaskolista
Bedzie ok, przedstaw wiecej kodu to wtedy ocenimy
erix
Cytat
index unique jest bez sensu z prostego powodu: on nie chce za kazdym razem dodawac nowego rekordu, tylko update'owac jeden. Poza tym opieranie sie obledy zwracane przez baze danych jest bez sensu.

Nie miałem na myśli błędów, tylko ON DUPLICATE KEY UPDATE w tym momencie... tongue.gif
lukaskolista
To masz racje, takie rozwiazanie bedzie lepsze, jezeli autor tematu potrafi programowac bazy danych. Przypuszczam, ze tak nie jest, wiec dobierzmy srodki do mozliwosci.
Crozin
Pobierasz rekord(y) gdzie: 1) użytkownik/URL jest taki jak podany w linku; 2) data ostatniego przyznania punktu plus jeden dzień (DATE_ADD()) jest mniejsza od aktualnej daty (NOW()).
Jeżeli zwróci Ci zero rekordów oznacza to, że możesz dodać punkt.

Podpowiedź: powinieneś w osobnej tabeli składować każdy pojedynczy punkt przyznany użytkownikowi, a w tabeli z użytkownikami trzymać co najwyżej sumę tych punktów. O ile nie ma uzasadnionej potrzeby nie powinno się nigdy usuwać/nadpisywać danych - lepiej jest je oznaczyć jako usunięte/nieaktualne.
pr0woKator
Jak naskrobie całość dodawania punktów to przedstawię tutaj i ocienicie. W tym momencie dziękuję za pomoc, odezwę się niedługo smile.gif
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.