Forum: Thread gelesen - wie realisieren?

Felix Kunsmann

Kurz weg …
Hallo,

ich code gerade (mehr aus Fun und um etwas zu lernen) ein kleines Forensystem. Momentan scheitere ich aber an der Umsetzung der "Thread-Gelesen-Funktion", d. h. der Anzeige, ob es neue Threads seit dem letzten Besuch gibt.

Wie würdet ihr so etwas realisieren?

Wichtig wäre vor allem, dass ungelesene Themen beim LogOut nicht automatisch als gelesen markiert werden.
 
Prinzipiell würde ich zu jedem Eintrag die Erstellungszeit und zu jedem Besuch die Anmeldezeit in die jeweilige Tabelle eintragen und beim nächsten Besuch vergleichen. Nach der Anmeldung baust du dem Besucher eine Tabelle, welche Einträge nach seinem letzten Besuch neu dazugkommen sind. Das beim Logut zu machen ist für mich nicht praktikabel, denn wenn sich jemand nicht ausloggt, sondern nur den Browser schließt (so wie ich), wird dessen neue Zeit nicht eingetragen.

Meinst du neue Threads oder neue Antworten?

Für die nicht Markierung von nicht gelesenen Einträgen müßtest du bei jeder Anmeldung eine Liste in seinem DB Eintrag mitführen, welche aktuell ungelesenen Einträge er hat. Jedes Mal, wenn er einen dieser Einträge aufruft, mußt du die Liste aktualisieren.
 
Meinst du neue Threads oder neue Antworten?
Neue Antworten :)

Für die nicht Markierung von nicht gelesenen Einträgen müßtest du bei jeder Anmeldung eine Liste in seinem DB Eintrag mitführen, welche aktuell ungelesenen Einträge er hat. Jedes Mal, wenn er einen dieser Einträge aufruft, mußt du die Liste aktualisieren.
ALso eine Tabelle in der Form
Code:
threads_gelesen (thread_id, user_id, last_visit_time)
?
Beim Besuch des Threads wird dann ein Eintrag angelegt.

Wobei für mich dann
Code:
threads_ungelesen (thread_id, user_id, last_visit_time)
mehr Sinn macht, da neue User nicht erst alles lesen müssen, sondern mit einem komplett gelesenen Forum starten. Bei einem neuen Thread oder einer neuen Antwort würde dann für jeden User ein Eintrag angelegt.
 
Richtig, eine threads_gelesen Tabelle macht keinen Sinn. Außer, du willst irgendwann den Server killen.
Die last_visit_time kannst du weglassen, da die am Besten in den Mitgliedsdaten gespeichert wird. Ich würde es aber auch eher so machen, daß bei der jeweiligen Anmeldung / Identifizierung durch Cookie nachgesehen wird, welche Antworten seit dem letzten Besuch hinzugekommen sind und die dann erst gespeichert werden. Würde die Daenmenge ziemlich reduzieren, da davon ausgegangen werden kann, daß die meisten Besucher die meisten neuen Artikel sofort lesen. Diese Speicherung kannst du auch über eine Liste in einem Textfeld der Mitglieds machen.

Inzwischen sind mir aber Bedenken gegen diese Vorgehensweise gekommen. Mich würde es tierisch nerven, wenn mir ständig Artikel aufgelistet werden, die mich nicht interessieren. Und in den meisten Fällen kann man eigentlich davon ausgehen, daß nicht jedes Mitglied jeden Thread interessant findet. Wenn du das so machst, solltest du aber wenigstens die Möglichkeit anbieten, alle Artikel als gelesen zu markieren oder alles in entsprechende Gruppen zu verteilen, damit der User die einzelnen Gruppen für die "ungelesen Liste" sperren kann.
 
Diese Speicherung kannst du auch über eine Liste in einem Textfeld der Mitglieds machen.
Wie genau würdest du das genau lösen? Eine Liste von Thread-IDs, mit Kommas separiert?

Wenn du das so machst, solltest du aber wenigstens die Möglichkeit anbieten, alle Artikel als gelesen zu markieren
War sowieso geplant :)

oder alles in entsprechende Gruppen zu verteilen, damit der User die einzelnen Gruppen für die "ungelesen Liste" sperren kann.
Wie meinen? a la "Ich möchte nur über neue Threads aus den Foren A, C und D benachrichtigt werden"?
 
Wie genau würdest du das genau lösen? Eine Liste von Thread-IDs, mit Kommas separiert?
Genau, die ließen sich leicht mit explode und implode bearbeiten.

Wie meinen? a la "Ich möchte nur über neue Threads aus den Foren A, C und D benachrichtigt werden"?
Richtig, entweder so oder als Ausschlußliste. Vorbild für mich war da die RSS Verwaltung in diesem Forum. Da kann ich ja auch genau aufzählen, über was ich informiert werden will.
 
Es ist ja nur eine Möglichkeit. Je nach Datenaufkommen kann es aber auch einiges an Speicherplatz sparen. Was schneller ist, müßte man auch erst einmal abklären. Gerade wenn das Forum stark wächst, wäre das auch ein nicht zu verachtendes Punkt.
Im Übrigen mußt du ja nicht jede Änderung wegschreiben. Du könntest es auch als Array mitführen und es entweder bei einem Logout machen oder wenn er längere Zeit nichts mehr gemacht hat.
Davon abgesehen, wie willst du das Forum ohne PHP realisieren?
 
Du könntest es auch als Array mitführen und es entweder bei einem Logout machen oder wenn er längere Zeit nichts mehr gemacht hat.
Wäre natürlich auch eine Möglichkeit :)

Davon abgesehen, wie willst du das Forum ohne PHP realisieren?
Hab ich ja nicht gesagt. Ich geh aber mal stark davon aus, dass es schneller ist, wenn nur MySQL rechnen muss als wenn ich dann auch noch PHP dazunehmen muss.
 
Zurück