![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Tworze swoj pierwszy projekt w php z wykorzystaniem mysql. W tej chwili rozgryzam jak najlatwiej informowac danego uzytkownika, ze od jego ostatniej wizyty w danym temacie lub artykule sa nowe, nie czytane komentarze/posty. Wpadlem na kilka pomyslow odnosnie "flagowania" w bazie np: 0 umieszczane w tabeli user w momencie wyslania nowego artykulu, i nastepnie w momencie jego wyswietlenia przez danego uzytkownika wyslanie "1" w to miejsce. Jednak to jest bezsensu.. Kazdy artykul czy temat to nowe kolumny. Obecnie jestem na urlopie i pisze z telefonu, nie moge sobie testowac nic, jednak nie daje mi to spokoju, mysle nad rozwiazeniem juz od wczoraj, a php ucze sie dopiero od 2 miesiecy. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dodaj do tabeli mark_read pola "data_przeczytania" (ustawiane na czas bieżący przy dodawaniu/aktualizacji wiersza) i ew. "post_id" (id ostatniego posta w wątku, który użytkownik miał szansę przeczytać).
Z takiej tabeli nie usuwaj wierszy przy każdym dodaniu posta. Usuwaj je cyklicznie codziennie (albo co miesiąc) dla wpisów o "data_przeczytania" starszym niż 30 dni (zapobiegnie to puchnięciu tabeli, którego się boisz), a jednocześnie uznawaj, że jeśli ostatni post w danym wątku został napisany wcześniej niż 30 dni temu, to każdy użytkownik ma ten temat oznaczony jako przeczytany. Temat oznaczasz jako nieprzeczytany tylko wtedy, gdy istnieje wpis w "mark_read" o "data_przeczytania" mniejszym niż data dodania ostatniego posta (warto rozszerzyć o taką kolumnę tabelę "tematy", żeby nie obliczać na żywo). Kolumna "post_id" może posłużyć do wyróżnienia postów napisanych od ostatniej wizyty w wątku, przy czym w przypadku braku wpisu w mark_read takimi postami będą wszystkie posty napisane w ciągu ostatnich 30 dni. Żeby jeszcze bardziej sobie uprościć życie, proponuję napisanie takiego widoku w bazie danych:
Potem odpytujesz widok np. takim zapytaniem:
I otrzymujesz wszystkie tematy z punktu widzenia tego użytkownika, a w kolumnie "czy_przeczytany" masz zero-jedynkową informację o tym czy dany użytkownik przeczytał temat czy nie (i czy nie należy go np. pogrubić na liście). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 02:08 |