Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Nieczytane posty / artykuły
Forum PHP.pl > Forum > PHP
Louner
Witam

Szukam podpowiedzi dotyczącej sposobu wykonania czegoś takiego jak nieczytane posty , czy artykuły. winksmiley.jpg 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. biggrin.gif

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

Pozdrawiam
sf
A jak to jest zrobione w phpbb ? tongue.gif
misiek172
hmm nie wiem... moze dozywotnie sesje...
czyli uzytkownik ma taki sam id sesji (zapisany w bazie ) przez cały czas i tam numery ID przeczytanych tematów lub

maybe dla kazego topicu w bazie przechowywany spis ID uzytkownikow którzy otwierali ten temat
flv
Przede wszystkim to nie zapisuj w bazie informacji czy artykul jest przeczytany czy nie , zapisuj tylko id jesli artykul jest nieczytany, dodatkowo przy wylogowywaniu usuwaj wszystkie nieczytane artykuly i wtedy przy nastepnym logowaniu zostaną wyswietlone tylko nieczytane artykuly od ostatniej wizyty,podobne rozwiązanie stosowane jest m.in w phpbb.

Ewentualnie możesz oprzeć to o sesje i w nich zapisywać informacje o tym że temat jest nieprzeczytany, zdaje sie ze w podobny sposob jest to zrobione w ipb na ktorym teraz siedzimy, przynajmniej dla niezalogowanych uzytkownikow.
Louner
Myslę, że najrozsądniej będzie zapisywać datę ostatniej wizyty usera na stronie, a potem oznaczyć jako nieczytane wszystkie te artykuły, które były napisane po tej dacie. Nie wymyśliłem jeszcze jak rozwiązać problem, kiedy nowy artykuł będzie napisany w momencie , gdy user przegląda stronę. biggrin.gif

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:

  1. <?php
  2. $czytane_arty[$id_artykulu][$data_wejscia];
  3. ?>


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:
  1. <?php
  2. serialize($czytane_arty)
  3. ?>
, a odczytuję:
  1. <?php
  2. unserialize($czytane_arty)
  3. ?>


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

Jak na razie wszystko działa ok. Dziękuję za odpowiedzi i pozdrawiam. winksmiley.jpg

Louner
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.