[php + mysql] Odczytane tematy

0

Poszukuję lepszego niż mój sposobu oznaczania, czy tematy są przeczytane, czy nie. Ja mam tabele voyager_postread, gdzie mam pola read_topic i read_user. W momencie, kiedy użytkownik ogląda temat, do tej tabeli wstawiam rekord z numerem tematu oraz ID użytkownika. Przy wyświetlaniu listy postów sprawdzam, czy w tabeli voyager_postread jest już wartość - wtedy daje obrazek normal.gif, inaczej new.gif (przykładowo).

Gdy chodzi tylko o wyświetlenie listy tematów, to liczba zapytań nie jest duża, problem jest przy sprawdzaniu, czy W POKOJU są nowe posty... w tej chwili po prostu przechodzę po kolei przez wszystkie tematy w pokoju i sprawdzam , czy są jakieś nieprzeczytane. Jeśli tak: daję, że w pokoju są nowe posty, nie to obrazek, że nie ma nowych postów. Metoda ma jedną wadę: przy 11 pokojach z ok. 200 tematami mam ponad 150 zapytań... zna ktoś lepszą metodę na oznaczanie postów?

0

Twoj sposob jest dobry. Wysylasz jednak niepotrzebne pytania. Na tym forum takze jest podobne rozwiazanie (patrz kody źródłowe). Przy wyswietlaniu listy tematow mozesz zastosowac jedno zapytanie:

SELECT t.topic_id,
t.topic_subject,
m.user_id AS topic_marked
FROM topic t
LEFT JOIN topic_marking m ON m.user_id = 1 AND m.topic_id = t.topic_id

Teraz w petli sprwadzasz, czy topic_marked jest wieksze od zera. Jezeli tak, temat przez usera jest przeczytany.

Co do sprawdznia, czy sa nowe tematy na forum... sprawa jest nieco bardziej skomplikowana. Ja bym po prostu zrezygnowal z tej formy. Np. jezeli uesr jest zalogowany, mozesz notowac date ostatniej wizyty na forum. Nastepnie porownujesz czas ostatniej wizyty z czasem napisania ostatniego watku na forum.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.