[php] nieczytane posty / artykuły

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Louner
Nowy
Nowy
Posty: 89
Rejestracja: czw lut 03, 2005 6:20 pm
Kontakt:

[php] nieczytane posty / artykuły

Post autor: Louner »

Witam

Szukam podpowiedzi dotyczącej sposobu wykonania czegoś takiego jak nieczytane posty , czy artykuły. ;) Zastanawiam się jak oznaczać takie rzeczy, kiedy korzystam z bazy danych mysql. W sumie możnaby dodawać z każdym nowym artykułem 1 rekord na użytkownika który mówi, czy ten został przeczytany, czy też nie, ale to wg mnie zbyt mocno obciążałoby stronę, bo wystarczyłoby 100 userów i próba dodania 10 postów / artykułów skończyłaby się wpisaniem do bazy 1000 rekordów.

Zastanawiałem się też nad wykonaniem tego na plikach, ale to też powodowałoby sytuacje podobną do opisanej wyżej. :D

Bardzo proszę o podpowiedź, jak mogę wykonać skrypt sprawdzający czy dany artykuł / post jest przeczytany przez użytkownika?

Pozdrawiam
atom
Nowy
Nowy
Posty: 145
Rejestracja: wt gru 20, 2005 1:55 pm
Kontakt:

Re: [php] nieczytane posty / artykuły

Post autor: atom »

Jeśli nie chcesz obciążać serwera, może informację o tym co zostało przeczytane, a co nie, umieścisz po stronie klienta - w cookie. Dużym minusem tego rozwiązania jest to że jeśli użytkownik skorzysta w innego komputera, informacja o tym jaki artykuł przeczytał, będzie niedostępna.
ooo_michal
Przelotem
Przelotem
Posty: 245
Rejestracja: śr kwie 18, 2007 9:06 am

Re: [php] nieczytane posty / artykuły

Post autor: ooo_michal »

Najlżejsze dla serwera będzie porównanie daty i godziny ostatniego wylogowania użytkownika z datą dodania newsa. Rozwiązanie ma sporo wad ale jest bardzo proste i można je szybko wykonać. A jeśli doda się do tego rozwiązanie z cookie to narzędzie będzie i proste, i dosyć dokładne.
Chmura
Przelotem
Przelotem
Posty: 220
Rejestracja: ndz gru 31, 2006 12:46 am
Lokalizacja: o stamtąd
Kontakt:

Re: [php] nieczytane posty / artykuły

Post autor: Chmura »

informacje o przeczytanych postach dodawać do ciasteczka, podczas wylogowania wartość spisać do pliku lub bazy. Jedyny minus: gdy użytkownik się nie wyloguje dane nie zostaną zapisane (zawsze można użytkownika informować przy wyłączeniu przeglądarki ze się nie wylogował )


EDIT:
Kolega zaproponował:
"Zrób dla każdego konta kolumnę z listą artykułów odwiedzonych i rozdziel średnikami, przy odczytywaniu explode i sprawdzaj co przeczytane a co nie"
Louner
Nowy
Nowy
Posty: 89
Rejestracja: czw lut 03, 2005 6:20 pm
Kontakt:

Re: [php] nieczytane posty / artykuły

Post autor: Louner »

Zrobiłem to tak:

Dodałem w bazie tabelę z użytkownikami online. Kiedy user wchodzi na stronę, skrypt sprawdza wpisy w tabeli z userami online i wywala wszystkie starsze niż 300 sekund, przy okazji zaznacza w ich profilach czas ostatniej wizyty jako moment wyrzucenia z listy online.

Jako nowe artykuły na wstępie zaznaczane są te, które zostały dodane ( lub skomentowane ) po czasie ostatniej wizyty usera.

Tabelę userów poszerzyłem o kolumnę 'czytane_artykuly'. Kiedy user wchodzi do artyukułu i jest on nieczytany, informacja o tym zapisywana jest do tabeli:

[php]<?php
$czytane_arty[$id_artykulu][$data_wejscia];
?>[/php]

Data wejścia jest dodana z uwagi na komentarze. Jeśli ktoś skomentował artykuł po czasie zapisanym w tabeli znowu jest nieprzeczytany.

Tabelke od razu zapisuję do bazy w formie: [php]<?php
serialize($czytane_arty)
?>[/php], a odczytuję: [php]<?php
unserialize($czytane_arty)
?>[/php]

Kiedy user jest wymazywany z listy online, czyszczę pole 'czytane_artykuly' w bazie.

Jak na razie wszystko działa ok i przy okazji mam bajerek w postaci listy userów online. :D Dziękuję za odpowiedzi i pozdrawiam. ;)

Louner
ODPOWIEDZ