![]() |
![]() ![]() |
![]() |
![]()
Post
#41
|
||
![]() Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 13.01.2004 Skąd: Poznań Ostrzeżenie: (10%) ![]() ![]() |
wracam do tego tematu - swoje forum juz dość rozwinąłem , a deser zostawiłem na koniec - czyli wyświetlanie nowych postów ...
Jak miała by wyglądać ta tabela w mysql'u? ja robię tak:
Ale zastanawiam się nad robienie na odwrót, ponieważ teraz jak ktoś przeczyta post'a to usunie się z bazy zapis, że ktoś go czytał. Jednak mniej miejsca chyba zajmie jak będe zapisywał to że ktoś przeczytał. ale z drugiej strony jak zrobie opcje "odznacz wszystkie jako przeczytane" to będę musiał zapisać wszystkie topici, a wygodniej było by je usunąć... *** Mam kolejny pomysł co to post_tracker'a . Mianowicie można dodać do tabeli z topicami (u mnie forum_topic) pole ost_data_odp oraz czek_new_post i porównać ost_data_odp z aktualną datą jeśli jest np. różnica większa niż 2 tygodnie wtedy ustawić w czek_new_post jako przeczytane (np. value=1) i wtedy opróżnić tabele post_tracker (u mnie new_post) a jak pojawi się wypowiedź nowsza wtedy uaktualnić tabele post_tracker. -------------------- |
|
![]()
Post
#42
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
1. Przy każdym wyświetleniu strony dodajesz do pewnej tablicy ID wszystkich nieprzeczytanych postów.
2. Serializujesz tablice w ciastku u odwiedzajacego. 3. Przy wyswietleniu jakiegos watku/posta usuwasz odpowiednie ID z tablicy i nadpisujesz ciastko. 4. "Zaznacz wszystkie jako przeczytane" czysci tablice. Przy pierwszym wejsciu na stronę user dostanie WSZYSTKIE istniejace posty na stronie, co sie zgadza, bo nic jeszcze nie przeczytał. Nice&Softly. -------------------- |
|
|
![]()
Post
#43
|
||
![]() Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 13.01.2004 Skąd: Poznań Ostrzeżenie: (10%) ![]() ![]() |
tylko cholera tak jak ktoś powiedział w tym topicu, że tabela new_post będzie zawierała iloczyn topiców i userów ;/ a to będzie dużo zajmowało...szkoda
![]() Jeszcze mam jeden pomysł , aby nowe posty to były tylko ostatnie 20 ich...bo po co ma być zaśmiecana baza wszystkimi. A oczywiście 20 z każdego działu Ten post edytował KRCreater 4.10.2004, 19:59:24 -------------------- |
|
![]()
Post
#44
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Cytat(KRCreater @ 2004-10-04 20:39:04) Jeszcze mam jeden pomysł , aby nowe posty to były tylko ostatnie 20 ich...bo po co ma być zaśmiecana baza wszystkimi. A oczywiście 20 z każdego działu Masz na mysli posty? czy topiki? Ja myslalem zrobic tabele w ktorej powiaze tylko userow z danymi topicami (zadnych informacji o postach bym nie zapisywal - za duzo by tego bylo!). I wtedy jezeli w bazie danych zapiszesz date odwiedzenia danego topicu to przy ponownym wejsciu usera na strone bedzie wiadome ktore posty nie przeczytal w danym topicu - te z pozniejsza data. Zakladajac oczywiscie ze gdy user otwiera dany topic, to w tym momencie wszystkie posty ktore tam sa beda oznaczone jako przeczytane. -------------------- |
|
|
![]()
Post
#45
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
http://gizycko.one.pl/ - moje forum.
Pisałem je długo, w sumie (z długimi przerwami) będzie już ponad rok. Po drodze pojawiało się mnóstwo problemów, ale dzięki nim lepiej poznałem php i MySQL. Pozdrawiam i życzę pomyślności w dobrnięciu do celu ![]() -------------------- |
|
|
![]()
Post
#46
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Cytat(KRCreater @ 2004-10-04 20:39:04) tylko cholera tak jak ktoś powiedział w tym topicu, że tabela new_post będzie zawierała iloczyn topiców i userów ;/ a to będzie dużo zajmowało...szkoda ![]() Jeszcze mam jeden pomysł , aby nowe posty to były tylko ostatnie 20 ich...bo po co ma być zaśmiecana baza wszystkimi. A oczywiście 20 z każdego działu A kto mówi o iloczynie "user * nowe_posty" ? Czy trzeba dac gotowca, żeby wyjaśnić prosty algorytm?
Jednym słowem: 1. Czytamy cookie usera 2. Modyfikujemy tablice dodajac i czyszcząc odpowiednie wartości 3. Wyświetlamy stronę dodatkowo modyfikując tabelę 4. Zapisujemy cookie 5. TheEnd Ja widac na załączonym obrazku, każdy user ma właśna tablicę. Aby zapewnic "pezenościopść usera, możemy jego $_COOKIE['Unreaded'] serializować w bazie w tabeli zaraz przy jego profilu i jesli nie ma ciastka, to patrzeć, czy taka serializacja jest. Jeśłi nie ma ani tego, ani tego, to mamy po porostu nowego usera. Jeśli okaże się, że ilość danych w ciastku przekroczy magioczne 4 kilobajty, $Unreaded zapisujemy tylko w bazie. Jeszcze jakieś pytania? -------------------- |
|
|
![]()
Post
#47
|
||
![]() Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 13.01.2004 Skąd: Poznań Ostrzeżenie: (10%) ![]() ![]() |
A jeśli ktoś ma wyłączone ciastka ? Na ciastkach mógł bym to zrobić ale ja zrobiłem post_tracer'a , który będzie sporo zajmował ale za przyjemność trzeba płacić.
-------------------- |
|
![]()
Post
#48
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
No pozostajesz przy samej bazie. Ale nie zaznaczasz tego co kto przeczytal, tylko czego nie przeczytał według tego, co powiedziałem wyżej.
Każdy user ma pole TEXT przy swoim profilu, gdzie pchasz zserializowana tablicę ID nieprzeczytanych. -------------------- |
|
|
![]()
Post
#49
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Problem można rozwiąząc beż użycia cookies, bez tabel z przeczytanymi/nieprzeczytanymi postami.
Wystarczy w tabeli z użytkownikami dodać 1 kolumnę: data_ostatniego_logowania (najlepiej timestamp) i przy każdym poście/temacie dodać (o ile nie ma)kolumnę data_dodania. i w tej chwili wszystko już mamy, nie potrzeba nam żadnych COOKIES, dodatkowych tablic, ani nic. Aby uzyskać nieprzeczytane posty wystarczy wybrać z bazy te, które mają świeższą datę od daty ostatniego_logowania usera wchodzącego na stronę. |
|
|
![]()
Post
#50
|
|
![]() Grupa: Zarejestrowani Postów: 449 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Data ostatniego logowania nie gwarantuje ze uzytkownik wogule coś czytał, a zawlaszcza ze przeczytal wszystkie posty - bo chyba tylko tak by to dzialalo.
-------------------- |
|
|
![]()
Post
#51
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 27.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
racja! ja proponowałem rozwązanie "Zobacz posty od ostatniej wizyty". Tak to jest rozwiązane w phpBB
|
|
|
![]()
Post
#52
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
I jest to bardzo ułomne.
Moje rozwiązanie stwarza pewna nadmiarowość danych jednak zapewnie w 100%, że jeśli użytkownik czegoś nie cztał, to zawsze to będzie miał oznaczone jako nieczytane, chyba, ze świadomą akcją spodowuje "odznaczenie". -------------------- |
|
|
![]()
Post
#53
|
|
![]() Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Cytat(misterLu @ 2004-10-05 18:50:45) Problem można rozwiąząc beż użycia cookies, bez tabel z przeczytanymi/nieprzeczytanymi postami. Wystarczy w tabeli z użytkownikami dodać 1 kolumnę: data_ostatniego_logowania (najlepiej timestamp) i przy każdym poście/temacie dodać (o ile nie ma)kolumnę data_dodania. i w tej chwili wszystko już mamy, nie potrzeba nam żadnych COOKIES, dodatkowych tablic, ani nic. Aby uzyskać nieprzeczytane posty wystarczy wybrać z bazy te, które mają świeższą datę od daty ostatniego_logowania usera wchodzącego na stronę. pisząc swoje forum tak to na początku rozwiązałem. minusy: Gdy user sam napisze posta, pokazuje mu ze go nie czytal. W zaleznosci od tego kiedy ustawiasz date osattniego logowania moga wyniknac rozne anomalie ;] -------------------- |
|
|
![]()
Post
#54
|
||
![]() Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 13.01.2004 Skąd: Poznań Ostrzeżenie: (10%) ![]() ![]() |
Moje forum mieści się w jednym pliku index.php to dobrze czy źle (nic nie includuje poza konfiguracją)
Czy stało by się bardziej wydajne jeśli podzielił bym skrypt na części np. ODPOWIEDZ / NOWY TEMAT / USUN POST / ZAMKNIJ POST cte. ![]() *** Forum skończyłem ![]() Teraz je upiększam :] Jak skończę moją stronę to wam pokażę moje dzieło ![]() Ale odpowiedzcie mi na pytanie powyżej ![]() Pozdrawiam *** aktualnie pracuję nad tym: Cytat Jeszcze mam jeden pomysł , aby nowe topic'i to były tylko ostatnie 20 ich...bo po co ma być zaśmiecana baza wszystkimi. A oczywiście 20 albo 10 z każdego działu. Jeszcze nie wiem ile wybrać
![]() Ten post edytował KRCreater 6.10.2004, 01:42:03 -------------------- |
|
![]()
Post
#55
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Napisałeś forum dyskusyjne na jednym pliku?
To ja powiem tak: Cholernie źle. - Polecam za pół roku wprowadzić do niego modyfikację. - nie masz skór - nie masz wersji językowych - masz bałagan. Czy kod będzie do wglądu? -------------------- |
|
|
![]()
Post
#56
|
||
![]() Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 13.01.2004 Skąd: Poznań Ostrzeżenie: (10%) ![]() ![]() |
Nie potrzebuje wersji językowych, a skórę dostosowałem do mojej strony.
Tylko dopracuje forum i pokaże wam skrypt. *** Oto jak rozwiązałem funkcję która będzie mi pokazywać tylko 10 nowych wiadomości, a resztę wpisów usunię z bazy (może to zagmatwane, ale kod wszystko wyjaśni):
Działa elegancko!!! Ten post edytował KRCreater 8.10.2004, 23:52:36 -------------------- |
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.08.2025 - 03:36 |