CodeForum.chCode ForenPHPThema: Frage zu eigenem Forum - wie "gelesen" markieren?
Seiten: [1]
AntwortenDrucken
Autor Thema: Frage zu eigenem Forum - wie "gelesen" markieren?  (Gelesen 630 mal)
Rubber
Gast
« am: 26. September 2009, 22:39:46 »
ZitierenZitat Beitrag ändernÄndern Beitrag löschenLöschen

Hi,
ich hab jetzt den versuch begonnen ein eigenes Forum zu schrieben.
(keine Baumstruktur)

Und steh ich gerade vor dem Problem, wie ich es schaffe, das ein User der sich einloggt sieht, welchen Beitrag er schon gelesen hat und welchen nicht.

Könnt ihr mir da Tipps geben?

lg
Rubber
Moderator informieren   Gespeichert
Jabba
Neu hier
*
Offline Offline

Beiträge: 20


« Antworten #1 am: 27. September 2009, 14:44:53 »
ZitierenZitat

Du musst dir den Zeitpunkt merken, an dem der User das letzte mal im Form aktiv war - sprich: eine Seite aufgerufen hat. Alle Beiträge die danach geschrieben wurden, hat er noch nicht gelesen.

Dann stehst du natürlich vor dem Problem, dass der Zeitpunkt der letzten Aktivität sich bei jedem Seitenaufruf ändert, der User also niemals irgendwas als neu angezeigt bekommen würde. Deswegen speicherst du dir, wenn der User sich einloggt bzw. eine neue Session für ihn erstellt wird, den aktuellen "letzte Aktivität"-Zeitpunkt in der Session, bevor du in der Datenbank den Wert aktualisierst.

Nun hast du in der Session einen fixen Zeitpunkt gespeichert, alle Beiträge die danach geschrieben wurden, sind neu.
Zusätzlich führst du in der Session eine Liste, welche Beiträge der User bei seinem aktuellen Besuch gelesen hast. Diese zeigst du dann nicht mehr als neu an.

Wenn der User das Forum verlässt - also z.B. den Browser schließt - hast du in der Datenbank (oder wo auch immer du deine User speicherst) den Zeitpunkt des letzten Seitenaufrufs stehen. Und wenn er dann das nächste mal auf die Seite kommt, geht das Spiel von vorne los.
Moderator informieren   Gespeichert

Jabba
Neu hier
*
Offline Offline

Beiträge: 20


« Antworten #2 am: 29. September 2009, 10:52:13 »
ZitierenZitat

Das funktioniert nach dem gleichen Prinzip, nur dann brauchst du praktisch nichts in der Session speichern.

Du speichst zu dem User (z.B. in der Datenbank) einen "Alles gelesen"-Zeitpunkt, alles vor diesem Zeitpunk ist gelesen, alles danach nicht. Und zusätzlich dann eine Liste mit Themen, die von den ungelesenen ausgeschlossen werden, also bereits gelesen sind.

Allerdings hast du dann unter Umständen Probleme mit der Menge, die du speichern musst. Stell dir mal vor ein User ignoriert bestimmte Themen einfach und liest sie niemals - drückt aber auch nicht auf den "Alles gelesen"-Button.
Dann würde es niemals dazu kommen das der "Alles gelesen"-Zeitpunkt mal aktualisiert wird, sondern deine Liste der Themen die er bereits gelesen hat wird einfach nur immer länger.

Das könnte man natürlich umgehen in dem man sagt, ein Thema wird unter bestimmten Bedingungen trotzdem als gelesen markiert (z.B. seit X Tagen keine neuen Beiträge im Thema, aber der User hat noch nicht rein geschaut).

Diese Gedanken sind allerdings rein theoretisch, ich habe das bisher nicht nachgerechnet wieviel Speicherplatz da gebraucht wird und wie schnell das zu einem Problem werden kann - alles nur spontane Überlegungen Zwinkernd


Das Problem was du beschreibst, also ein User liest bei einem Besuch nur X von Y neuen Beiträge, beim nächsten Besuch sind aber alle Y als gelesen markiert, dürftest du bei den meisten "großen" Forensystem haben. Als ich mich das letzte mal mit diesem Problem befasst habe, war es auf jeden Fall noch so.
Moderator informieren   Gespeichert

Seiten: [1]
AntwortenDrucken
CodeForum.chCode ForenPHPThema: Frage zu eigenem Forum - wie "gelesen" markieren?
Gehe zu:  

 

Partner Sites

Werbung

TinyPortal v1.0.5 beta 1© Bloc