![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 6.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałbym stworzyć ranking najpopularniejszych tematów(podstron) w serwisie (w danej godzinie, dniu, miesiącu, roku). Zastanawiam się jak to zrobić. Mój pomysł to stworzenie nowej tabeli z kolumnami: id | data | id_podstrony | licznik Po wejściu użytkownika na daną podstronę sprawdzamy czy dla aktualnej daty istnieje już id tej podstrony, jeśli tak to inkrementujemy licznik a jeśli nie dopisujemy nowy rekord z aktualną datą i ustawiamy licznik na 1. Kod:
Z jakiegoś powodu skrypt przy odwiedzeniu danej strony kilka razy nie zwiększa jej licznika tylko dopisuje nowy rekord, co robię nie tak ? Ten post edytował Greg23 21.07.2012, 15:19:12 -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 10.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
$wynikdnia zawsze będzie równy 0, bo wcześniej nie przypisujesz mu żadnej wartości
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 6.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jakiejś ślepoty dostałem...
Jest ok, ale to jest ranking dzienny. W jaki sposób stworzyć na tej podstawie ranking miesięczny ? -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 3 Dołączył: 22.04.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
na jednym liczniku nie dasz rady... chyba, że będziesz to dzielił na jakąś ilość dni, ew. możesz zliczać każde wyświetlenie i zapisywać kiedy ono było i na tej podstawie liczyć miesięczne zestawienia.
-------------------- Prywatny blog -> cupial.com.pl
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 6.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak właśnie myślałem.
Czyli wszelkie rankingi typu godzinny, dzienny, tygodniowy, miesięczny, roczny trzeba by tworzyć na osobnej tabeli ? Tak będzie najlepiej ? -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 3 Dołączył: 22.04.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
myślę, że tak. Tylko nie biorę pod uwagę tutaj wydajności bazy... widziałem w jakimś projekcie coś takiego i w miarę dobrze działało to, baza była duża ale dawała radę spokojnie, bo w zasadzie ciągle coś tam dodajesz.
//jeszcze doczytałem Twoje pytanie.. tz. tworzysz jedną tabele i tam wszystkie wyśietlenia wrzucasz i na jej podstawie wyciągasz sobie odpowiednie dane.. więcej tabel tu nie trzeba. Robisz z id i datą wyświetlenia i wszystko można z tego odczytać. Ten post edytował csharp 21.07.2012, 16:19:50 -------------------- Prywatny blog -> cupial.com.pl
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 6.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
myślę, że tak. Tylko nie biorę pod uwagę tutaj wydajności bazy... widziałem w jakimś projekcie coś takiego i w miarę dobrze działało to, baza była duża ale dawała radę spokojnie, bo w zasadzie ciągle coś tam dodajesz. //jeszcze doczytałem Twoje pytanie.. tz. tworzysz jedną tabele i tam wszystkie wyśietlenia wrzucasz i na jej podstawie wyciągasz sobie odpowiednie dane.. więcej tabel tu nie trzeba. Robisz z id i datą wyświetlenia i wszystko można z tego odczytać. Właśnie chodzi o to żeby to szybko działało bo rekordów jest bardzo dużo. Gdy będę zapisywał każde wejście na stronę z jego datą i potem to jakoś obrabiał, przeliczając to na statystyki dzienne, miesięczne, roczne itp to zamuli mi to strasznie wszystko w porównaniu do tworzenia osobnych tabel zliczających wejścia dla danej strony w danym dniu, tygodniu, miesiącu itp, bo chciałbym te dane wyświetlać na stronie. Chyba, że nie będę przeliczał tego za każdym razem tylko powiedzmy raz dziennie albo jakiś memcached. W taki razie jeśli zapisywałbym każde wyświetlenie strony do bazy wraz z dokładną datą:
To jak na tej podstawie stworzyć ranking godzinny, dzienny, miesięczny ? Ten post edytował Greg23 21.07.2012, 16:32:50 -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 22.07.2025 - 22:56 |