Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP,MySQL] Tworzenie własnego forum - zliczanie unikalnych odsłon
kurkusmaximus
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.01.2010
Skąd: Sopot

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


Witajcie!

Jestem na etapie tworzenia własnego forum. Większość zadań jakie sobie postawiłem wykonałem, lecz pozostało kilka, wydawać by się mogło bardzo łatwych, za które nie wiem jak się zabrać.
W spisie tematów posiadam kolumnę, w której wyświetlam liczbę postów i liczbę odsłon danego tematu. Chciałbym, by po wejściu w dany temat skrypt sprawdzał czy użytkownik (zalogowany bądź nie) już odwiedził ten temat, jeśli nie to licznik odsłon zwiększałby się o 1. Równocześnie chciałbym, by użytkownik wchodząc na stronę ze spisem tematów był poinformowany o nowym poście w temacie poprzez zmianę grafiki przy tytule tematu.

Baza danych
W tabeli "forum_tematy" posiadam pola:
nr------nr_dzialu------przyjazny_link------nazwa------opis------autor------data------ilosc_postow------ilosc_odslon

W jaki sposób zaplanować tabele w bazie danych, dzięki którym mógłbym wykonać te zadania?
Go to the top of the page
+Quote Post
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


Cytat(kurkusmaximus @ 3.12.2011, 12:21:38 ) *
Równocześnie chciałbym, by użytkownik wchodząc na stronę ze spisem tematów był poinformowany o nowym poście w temacie poprzez zmianę grafiki przy tytule tematu.

możesz to zrobić na 2 sposoby
optymalny (lecz posiada swoje wady...): zaznaczasz tematy w których pojawił się post później, niż ostatnie logowanie
pełny: dodajesz nową tabele w której trzymasz id_tematu i id_użytkownika. po dodaniu nowego posta dodajesz id temtu i id użytkownika. użytkownik przeczyta dany post - rekord jest usuwany. tutaj musisz zważać na liczbę rekordów i kontrolować, aby jeden użytkownik miał zaznaczane ciągle max (np.) 100 tematów, w innym przypadku użytkownicy "owce" (nie logujący się od dłuższego czasu) będą niepotrzebnie generować obciążenie

--edit--
odnośnie unikalnych wizyt - tu można by to rozpatrzyć z innej strony - po co? czy na pewno taka informacja jest niezbędna do "życia"? czy opłaca się zapychać bazę danych danymi typu: temat => ip odwiedzających? sprawa wątpliwa, a decyzja należy do ciebie

Ten post edytował r4xz 3.12.2011, 13:57:55
Go to the top of the page
+Quote Post
acztery
post
Post #3





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


a może ciasteczka (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
r4xz
post
Post #4





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


Cytat(acztery @ 3.12.2011, 13:55:32 ) *

na zasadzie połączenia wersji optymalnej z ciasteczkami? nie głupie... pobrać nowe tematy/posty od ostatniej wizyty i zapisać do cookie, a potem eliminować z cookie po przeczytaniu. sposób dobry, jednak tu potrzebna jest opinia kogoś doświadczonego - jak to wygląda od strony technicznej (pamięć cookie przy większy forach etc.), ale logicznie wygląda bardzo sensownie.
Go to the top of the page
+Quote Post
kurkusmaximus
post
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.01.2010
Skąd: Sopot

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


Cytat(acztery @ 3.12.2011, 13:55:32 ) *

Nie wszyscy mają je włączone i mają ograniczoną pojemność.

Chyba znalazłem rozwiązanie na pierwszą część pytania. Tworzę tabelę "forum_odslony" gdzie będę trzymał idy tematów i ipy użytkowników w takiej formie:
nr tematu---ip
1---83.4.228.228
1---83.4.228.229
1---83.4.228.230
1---83.4.228.231
2---83.4.228.229
2---83.4.228.228
...

Z początku też myślałem o:
nr tematu---ip
1---83.4.228.228|83.4.228.228|83.4.228.228|83.4.228.228|83.4.228.228|83.4.228.228
2---83.4.228.228|83.4.228.228|83.4.228.228|83.4.228.228|83.4.228.228|83.4.228.228
...
ale wydaje mi się, że to byłoby mało efektywne

@r4xz, spróbuję

Ten post edytował kurkusmaximus 3.12.2011, 14:05:17
Go to the top of the page
+Quote Post
r4xz
post
Post #6





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


@kurkusmaximus, a zobacz jeszcze http://stackoverflow.com/questions/4982701...-ip-in-database
Go to the top of the page
+Quote Post
acztery
post
Post #7





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


teraz chyba wszystkie strony wymagają ciasteczek. % które mają je wyłączone jest mały... To tak jak by nie korzystać z flesha albo mieć wyłączona obsługę JS.
Go to the top of the page
+Quote Post
kurkusmaximus
post
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 27.01.2010
Skąd: Sopot

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


Rozwiązany.

#odsłony
tabela-wszystko int: nr---nr_tematu---ip

  1. if( $_SERVER['HTTP_X_FORWARDED_FOR'] ){
  2. $ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
  3. }else{
  4. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  5. }
  6.  
  7. $long = ip2long($ip_prawdziwe);
  8.  
  9. if( !($long == -1 || $long === FALSE) ){
  10. $ip = sprintf("%u\n", $long);
  11.  
  12. $wynik = mysql_query("SELECT * FROM forum_odslony WHERE nr_tematu = '$t' AND ip = '$ip';") or die("błąd w pytaniu");
  13. $num_rows = mysql_num_rows($wynik);
  14.  
  15. if( $num_rows == 0 ){
  16. mysql_query("INSERT INTO forum_odslony (nr_tematu, ip) VALUES ('$t', '$ip');")or die("błąd w pytaniu");
  17. mysql_query("UPDATE forum_tematy SET ilosc_odslon = ilosc_odslon+1 WHERE nr = '$t';") or die("błąd w pytaniu");
  18. }
  19. }


#nowy post
tabela-wszystko int: nr---uzytkownik---nr_tematu---data

Po wejściu w temat sprawdzane jest czy istnieje wpis uzytkownik+nr_tematu, jesli nie, to taki wpis tworzy przypisując datę ostatniego postu. Jeżeli istnieje to wyciąga datę i porównuje z ostatnim postem w temacie. Jeśli data ostatniego postu jest większa niż ta zapisana w tabeli to aktualizuje wpis uzytkownik+nr_tematu+data.
po wejściu w wpis tematów sprawdzane jest czy data ostatniego postu jest większa niż ta zapisana w tabeli i "maluje" odpowiedni obrazek.

Idę spać.
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: 23.08.2025 - 14:15