Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Nieprzeczytane posty
LewyM1
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 22.02.2011
Skąd: Sierpc

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


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukesh
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 14
Dołączył: 25.08.2006

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


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.

Ten post edytował lukesh 26.11.2011, 17:57:47
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 06:45