Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[php] nowe posty na forum

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[php] nowe posty na forum

Post 27.06.2004, 10:58:36

Jak oznaczyć dla pojedynczego użytkownika, że post był czytany czy nie? (chodzi mi o metodę np. coś takiego jak w phpbb czy innych forach)
adi91
Adrian Boczkowski

Posty: 6
Dołączył(a): 25.06.2004

Post 27.06.2004, 11:01:53

pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 11:03:19

Przydaje się data ostatniego logowania użytkownika, aby wiedzieć jakie posty pojawiły się od tego czasu, reszte przechowywać w sesjach, tj. informacje które posty są już przeczytane podczas bieżącego logowania.
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 12:05:29

Tak teraz skolej mam inne pytanie dla tych ktorzy znaja juz wymienione watki.
zauzmy ze forum istnieje juz powiedzmy dwa lata a na nim jest napisanych kilkaset tysiecy postow.
rejstruje sie ktos nowy i zaczyna odnaczac jemu nieprzeczytane posty jego wejscie na forum wczesniej nie nastapilo jego wejscie wiec musze mu odznaczyc wszyskie posty a wiec musialbym to robic dla kilkuset tysiecy
zauzmy ze nieprzeczytane posty wpisuje do tablicy a potem traktuje ja funkcja implode() w celu uzyskania stringa
krecja takiego stringa to straszna operacja bez wzgledu na to czy bede zapisywal stringa w sesji czy w bazie danych
Jak rozwiazac inaczej taki problem?
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 12:49:55

czy nie lepiej zrobic tak ze zapisuje sie date rejestracji uzytkownika i oznacza posty jako nowe tylko wg daty pozniejszej niz data rejestracji ??
Wiec wszystkie posty "przed" obecnoscia na forum takiego osobnika nie sa brane pod uwage.
Avatar użytkownikabendi
Marek Będkowski

junkie

Posty: 2867
Dołączył(a): 08.12.2003
Lokalizacja: Wrocław

Post 27.06.2004, 13:30:45

czyli w zasadzie mozna wziac pod uwage tylko postu przy pierwszym wejsciu jako zalogowany
Bo u mnie jest sytuacja tak ze nie bardzo moge tak zrobic jak proponujesz bendi:
Klient zazyczyl sobie zeby rejstracja byla dla calego systemu wiec jesli ktos zarejstruje sie na stronie to jest zarejestrowany na forum
moze sie zdarzyc ze ktos zarejetruje sie na stronie i nie bdzie przez rok wchodzil na forum

Ale co tutaj gdybac: moze sie na samym forum zdarzyc ze ktos wejdzie na nie i potem bedzie mial rok przerwy gdyby taka sytuacja zdarzyla sie na forum WebHelp to mialby dziesiatki tysiecy postow do odznaczenia.
Tutaj chyba sie posluze wygaszaniem ciastka po uplywie miesiaca zeby nie obciazac procesow. Jak myslisz bendi?
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 13:39:30

Hmm, w sesji przechowujesz tylko te posty, które "fizycznie" odwiedził użytkownik, czyli kliknał na linka do niego, i które zostały napisane po jego ostatniej wizycie. Więc na dobra sprawe w sesji nie będziesz przechowywał kilku tysięcy nowych postów, chyba że jakiś użytkownik rzeczywiście przy jednym logowaniu przeczyta tyle postów ;) Dodatkowo możesz ustawić sobie też czas (od momentu zalogowania), po którym posty bedą traktowane jako przeczytane.
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 13:51:55

Co Ty bredzisz Nitro? sposob jest zupelnie inny(odwrotny) jak nie chce CI sie wczesniej przeczytac wszystkich postow to nie wlaczaja sie do dyskusji

gdybym odznaczal posty na ktore kliknal user to chyba bym musial wymagac od usera klikania na posty - bez sensu!
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 14:00:01

Na coś ten biedny użytkownik i tak musi kliknąć, aby przeczytać posty z danego tematu i wtedy zapisujemy sobie, że to właśnie uczynił, tym sposobem nie ma potrzeby zapisaywania dziesiątków tysięcy tematów i postów do sesji, czyli nie ma problemu z jej przeglądaniem. Podałem Ci tylko proste i skuteczne rozwiązanie, które nota bene działa :) Skorzystasz, czy też nie, Twoja sprawa.
Fakt nie czytałem tych wątków, co nie znaczy, że możesz mi zabraniać udziału w dyskusji :)
I jak to sam kilka dni temu napisałeś, nie życze sobie, aby ktoś się do mnie tak zwracał ;)
Ostatnio edytowano 27.06.2004, 14:06:30 przez Nitro, łącznie edytowano 1 raz
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 14:06:08

@Nitro: kilknales na forum web help chociazna jeden post?
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 14:10:10

Na post owszem i nie, ale na temat jak najbardziej :) Więc równie dobrze mogą to być tematy, wspomniałem natomiast o postach, bo sam korzystam właśnie z takiej metody, nie na forum phpBB, ma sie rozumieć.
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 15:14:47

Nitro napisał(a):Dodatkowo możesz ustawić sobie też czas (od momentu zalogowania), po którym posty bedą traktowane jako przeczytane.

Kuternoga z tym bym sie zgodzil - tak jest w phpBB chyba. Jezeli ktos wejdzie na forum i nawet jak nie przeczyta wszystkich nowych tematow to przy nastepnej wizycie sa "odznaczane". Poza tym tak jak postuluje Nitro mozna dodac czas waznosci oznaczania posta jako przeczytanego.

Co do ciacha ta watpliwa metoda.
1. Przegladarka wcale nie musi akcpetowac ciacha (moja Opera ma akurat ta funkcje wylaczona:)
2. Uzytkownik moze usunac cookies (robie to przynajmniej 2 razy w tyg :)

Wiec juz lepiej zdefiniowac jakis warunek w bazie - no jedna kolumna wiecej, albo jak sie dobrze ulozy zapytanie to nawet nie ;)
Avatar użytkownikabendi
Marek Będkowski

junkie

Posty: 2867
Dołączył(a): 08.12.2003
Lokalizacja: Wrocław

Post 27.06.2004, 15:20:15

Zle mnie zrozumiales bendi nie w tym co zacytowales z wypowiedzi Nitro byl blad
generalny zarys systemu odznacznia jest taki:
po wejsciu na strone ssystem sprawdza ktore posty zostaly napisane po dacie ostatniej wizyty usera i te wlanie wpisuje do bazy lub sesji jako nieprzeczytane.
chodzi o to ze jesli miedzy wejsciami bedzie przestrzen roku na tlocznym forum moze oznaczac to potrzebe wpisania do bazy/sesji kilku tysiecy postow. wygaszenie cistka po miesiacu jest dobrym roziwazaniem
A nie interesuje mnie zupelnie usuwanie ciastek przez userow recznie wtedy beda mieli wszystki posty jako przeczytane i nic mnie to nie obchodzi
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 15:43:11

Nie dostrzegasz jednej rzeczy. Nie ma potrzeby wpisywania do sesji wszystkich nowych postów. Wystarczy, że masz date ostatniej wizyty oraz date każdego postu. I przy wyświetlaniu tematów i postów, porównujesz te daty, zaznaczajac dany post jako przeczytany bądż nie. Dodatkowo w sesji przechowujesz te tematy oraz posty, które zostały przeczytane przez usera w danym logowaniu. Tym sposobem wpisy do bazy/sesji sa minimalne. W takim wypadku nie ma też potrzeby stosowania ciastka.
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 15:48:56

Ale po co zapisywać wszystkie posty? Masz zapisane kiedy ostatnio przeglądał ktoś forum i nowsze wypowiedzi są oznaczone jako nowe - tylko trzeba jakoś zapisać, które z tych nowych już są przeczytane by nadal jako nowe nie były zaznaczane (i o to własnie Nitro chodziło z tym klikaniem)
Przestrzeń roku... jak jeszcez zapisywać pod ręką czas ostatniej wypowiedzi to tylko przy wyświetlaniu masz proste porównywanie liczb (jeśli data to tiemstamp) a w pamięci masz tylko jedną liczbę...
Cisatka? No tylko ewentualnie do id sesji :>
- Taeril -
który | nie ma | poza tym | w ogóle | chcę | stąd | użytkownik | próba | używa |
artykuł | pomóc | korzystać | mój | wziąć | nie wiem | mógł | odnaleźć | sjp
Avatar użytkownikaTaeril
Przyjaciel WH

Posty: 913
Dołączył(a): 07.05.2004
Lokalizacja: Warszawa

Post 27.06.2004, 15:59:57

Niezupelnie sie z wami zgodze
rzeczywiscie gdyby chodzilo o odznaczanie samych postow ten system o ktorym piszecie dziala.
Jednak moje forum bedzie mialo struktore taka jak phpBB ta sobie zarzyczyl klient.
a wiec
posty sa w tematach a tez z kolei w grupach. Tak jak na webhelpie pracujemy w topicu nowe posty ale w grupie PHP i bazy danych

teraz jak sie wejdzie na forum to sa wymienione grupy i przy kazdej jest ikona czy sa w niej nowe posty

wiec zapis odczytanego posta nic nie daje bo i tak nie wiem czy wszystkie posty z danej grupy zostaly przeczytane

ja zapisuje posty nieprzeczytane wybierajac je w/g daty ostatniej wizyty jako szeregi:

id_grupy_posta|id_topicu_posta|id_grupy_posta|| ... nastepny rekord ||
i takiego stringa zapisuje w bazie badz w sesji

Nie da sie wiec zbytnio minimalizowac pojemnosci

prosze o komentarze z uwzglednieniem ze chce wiedziec czy wszystkie posty z topicu i grupy zostaly przeczytane
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 16:20:19

Hmm, możesz to rozwiązać w ten sposób, że przy logowaniu zapisujesz do sesji, czy na danym podforum jest jakiś nowy post, jeżeli user wejdzie do danej grupy/podforum i przeczyta w niej wszystkie posty, zmieniasz wartość zmiennej odpowiadającej za dana grupe. I teraz przy wyświetlaniu strony głównej (czyli tam gdzie widać podfora) wystarczy, że porównasz date dodania ostatniego postu na danym podforum z data ostatniego posta przeczytanego na tym podforum, którego masz zapisanego w sesji :) To chyba tyle.
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 16:43:01

user wejdzie do danej grupy/podforum i przeczyta w niej wszystkie posty

No No No i dochodzimy do sedna, tylko jeszcze mi odpowiedz jak sperawdzic czy wszystkie
nie musisz juz podalem recepte na to
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Post 27.06.2004, 16:48:14

Bardzo prosto :) Znamy date ostatniej wizyty, w sesji mamy zapisane tematy/posty które zostały przeczytane. Jeżeli suma postów od ostatniej wizyty równa się sumie postów zapisanej w sesji danego podforum, to w tej grupie wszystko zostało przeczytane ;)
e-Złota Rybka
Avatar użytkownikaNitro
Marcin Łyżniak

Posty: 352
Dołączył(a): 27.08.2003
Lokalizacja: Szczecin

Post 27.06.2004, 19:56:20

Tak reasumujac Twoje rozwiazanie jest dobre
Jednak w krytycznej sytuacji moje staje sie lepsze
krytyczna sutuacja to dla mnie tak:
w przypadku Twojego rozwiazania : user przeczytal wszystkie nowe posty
w przypadku Mojego rozwiazania: user nie przeczytal zadnego nowego
posta
w tych sytuacjach nastepuje maxdata
tylko ze u mnie zapisywane sa tylko posty

Przyznam ze nie moge zastosowac Twojego rozwiazania bo inaczej skontruowalem tabele mysql- to raz
dwa to rozwiazanie nie podoba mi sie dlatego ze jak user wychodzi to odznaczja mu sie automatycznie wszystki posty jako nieprzyczytane
pamiętaj error_reporting(E_ALL) to droga do sukcesu
Jeśli usunąłem Twój temat z działu WebBazar zanim napiszesz PW przeczytaj regulamin działu WB.
Kuternoga
Witold Gałka

dissolved boy

Posty: 6058
Dołączył(a): 13.07.2003
Lokalizacja: Łódź

Następna strona

Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 4 gości

Subskrypcja

Mamy 47539 zarejestrowanych użytkowników.
Najnowszy użytkownik: mikas


Nasi użytkownicy napisali:

  • 927990 wiadomości
  • w 243035 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)