![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 1 Dołączył: 9.02.2012 Ostrzeżenie: (10%) ![]() ![]() |
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ł:
co sądzicie? Ten post edytował pr0woKator 27.07.2012, 11:52:13 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A o indeksie UNIQUE słyszał? [;
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował lukaskolista 27.07.2012, 12:03:11 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 1 Dołączył: 9.02.2012 Ostrzeżenie: (10%) ![]() ![]() |
Czyli sposób jaki "zaryzowałem" będzie ok?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bedzie ok, przedstaw wiecej kodu to wtedy ocenimy
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
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... ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
To masz racje, takie rozwiazanie bedzie lepsze, jezeli autor tematu potrafi programowac bazy danych. Przypuszczam, ze tak nie jest, wiec dobierzmy srodki do mozliwosci.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 1 Dołączył: 9.02.2012 Ostrzeżenie: (10%) ![]() ![]() |
Jak naskrobie całość dodawania punktów to przedstawię tutaj i ocienicie. W tym momencie dziękuję za pomoc, odezwę się niedługo
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 16:09 |