Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Nieprzeczytane posty
Forum PHP.pl > Forum > Przedszkole
LewyM1
Witam.
Mam swój sposób na nieprzeczytane posty, działa on w następujący sposób:
Jak użytkownik napisze post, odczytuję wszystkich użytkowników bez tego co napisał i zapisuję w bazie danych user_id (wszystkich użytkowników po kolei) i post_id (identyfikator postu). Zastanawiam się, czy nie lepiej by było na odwrót. Użytkownik wchodząc w temat zapisuje dane do bazy danych o przeczytanych postach z danej strony tematu.
Martwię się, że obecna metoda może stwarzać problemy przy dużej ilości użytkowników np. długi czas zapytania podczas pisania postu, czy dużą ilość zajmowanej pamięci.
Czekam na podpowiedzi.
Pozdrawiam!
Kshyhoo
Skomplikowane. Lepiej zapisać czas odwiedzin userów a potem przy logowaniu sprawdzać, czy nie pojawiły się jakieś nowe wpisy od ostatniej wizyty.
LewyM1
Ciekawe, ale nie rozumiem jednej rzeczy. Co zrobić, gdy użytkownik widzi dalej powiadomienie o nieprzeczytanym poście, jak już go przeczytał po zalogowaniu się.
lukesh
Najlepiej będzie, jeśli w jednej tabeli będziesz miał artykuły wraz z ID (i co tam jeszcze chcesz), a w drugiej tabeli będzie pojawiać się informacja o ID artykuły wraz z użytkownikiem, który go przeczytał. Potem połacz te tabele za pomocą LEFT JOIN i dodaj odpowiednie warunki.

Zupełnie bez sensu jest dodawania za każdym razem wpisu dla każdego użytkownika. To zbyt obciąża serwer.

  1. SELECT * FROM artykuly LEFT JOIN (SELECT stat FROM przeczytane WHERE user='$user') AS przeczytane ON artykuly.id=przeczytane.artykulid


Powyżwszy skrypt wybierze wszystkie artykuły i doda do nich z tabeli przeczytane kolumnę status dla wybranego użytkownika. Wspólnym elementem tych tabeli są pola id i artykulid. Jeśli użytkownik nie przeczytał jeszcze jakiegoś artykułu, w tabeli przeczytane nie ma rekordu, dlatego kolumna status będzie miała wartość NULL.
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.