Wie realisiert man "ungelesene" Postings in einem Forum ?

BeaTBoxX

Erfahrenes Mitglied
Hiho leutz,

ich bastel grade wieder am Forum einer Seite und möchte gerne bei jedem Unterforum des Boards eine Grafik darstellen , ob im jeweiligen Forum neue Beitraege vorhanden sind.

Nun meine Frage: Wie realisier ich das?

Meine einzige Idee bisher:
Eine Tabelle in der DB erstellen.
Bei jedem neuen Posting fuer JEDEN user einen Eintrag machen. Sobald der Eintrag betrachtet wird, lösche ich den entsprechenden Datensatz wieder aus der DB.

Das scheint mir aber so, als würde die Tabelle im laufe der Zeit relativ gross werden.

Hat jemand von euch eine andere Idee?
Ich hab bei jedem Benutzer ein Datum mitgespeichert wann der letzte Login war.
Allerdings waeren dann nach einem Login alle Postings "gelesen" nur weil das Logindatum neuer ist, obwohl der User die Postings evtl garnicht gelesen hat.

Blöde Sache das.

Danke fuer Denkanstöße :)

Gruß
Frank
 
Dann bleibt dir gar nichts anderes als das für jeden User in einer Tabelle zu schreiben und dann zu löschen falls er es gelesen hat.
 
Mit der Frage hab ich mich auch schon mal auseinandergesetzt. Leider keine Lösung, ausser die von dir genannte.
Vielleicht könnte man das auch mit Cookies lösen, hab ich mich aber noch nicht mit auseinandergesetzt. Dann könnte man eventuell viel Zeit mit der Datenbank sparen.
 
Ich sehe zwei Möglichekeiten, den Datenbestand zu reduzieren:
Bei beiden speicherst Du in der Usertabelle nicht das Datum des letzten Logins, sondern Datum und Uhrzeit des Posts vor dem der User alle anderen Posts gelesen/gesehen hat.
Alles was danach kommt speicherst Du entweder wie Du beschrieben hast oder in einen Cookie bei dem User.
Da ein User in größeren Foren nicht alle Beiträge liest, solltest Du Dir überlegen, ob ein Beitrag für einen User nach X Stunden oder Tagen oder Y mal den "Titel in der Liste zeigen" automatisch als gelesen markiert werden soll, evtl. auch in Abhängigkeit von seinem letzen Login oder seiner Loginhäufigkeit. Alternativ hierzu könntest dem User auch einen Button zeigen, mit dem er alle Beiträge der Übersichtsliste eines Forums (oder auch aller Foren) als gelesen markieren kann. Dann würdest Du dem User die volle Kontrolle lassen. Ein bisschen Automatik über die Zeit oder ähnliches kann aber, denke ich, nicht schaden.
Wenn man sich zu umständliche Automatiken ausdenkt, wird es aber auch irgendwann esoterisch.
Ich habe noch ein bisschen Lesestoff, in dem es um ein sehr ähnliches Thema ging. Basis waren Threads und nicht Foren, aber daraus lässt sich ja auf die Foren schließen. Wenn Du Deinen Gelesen-Status auf Basis von Foren machst, reduziert sich die Datenmenge ohnehin auf ein Vertretbares Maß. Also los:
Ich vermute, dass es hier eine Kombination aus Sessioncookie und Zeitstempel ist. Dies führt nach meinen Beobachtungen jedoch manchmal zu merkwürdigen Ergebnissen, wenn man zum Beispiel alle neuen Beiträge liest, den Browser schließt und dann wieder in einem neuen Browserfenster die Liste mit den neuen Beiträgen aufruft. Zumindest sind mir einige Ungereimtheiten im Kontrollzentrum aufgefallen.

Gruß hpvw
 
Hmja danke ich hab die Threads mal gelesen.
Aber es gibt dort ausser der Feststellung, dass die Grösse ein Problem werden könnte leider keine Grossartige Hinweise.

Noch 2 Denkansätze:

1. Man speichert wirklich fuer jeden User und jedes Posting/Kategorie/wasauchimmer einen Datensatz.
Man indiziert diese Tabelle dann anhand des Eintragsdatums.
Zusammen mit einer "last login" information des Users koennte man doch die Daten dann ziehmlich einschraenken. Bringt so eine Indizierung sehr viel ? Um solche Art Datenmengen schhnell abzufragen ? (bei gelesen wird natuerlich der entsprechende datensatz wieder gelöscht )
Kann da Jemand was aus Erfahrung sagen, der mit grossen Datenmengen in (in meinem Fall)
MySQL zu tun hatte?


2ter Ansatz:
Umgekehrt denken:
Ich speichere nicht alle ungelesenen Posts sondern alle gelesenen.
was aber die Datenmenen nicht wirklich kleiner macht.. evtl nur wenn es viele inaktive user gibt. allerdings geht dann dieses "wenn gelesen -> löschen" nicht.. und die DB wird zwangsweise grösser...

Fragen über Fragen.

Trotzdem würde ich gern wissen , wie das hier realisiert ist. hier auf Tutorials.de geht das ja auch :)
 
Zuletzt bearbeitet:
BeaTBoxX hat gesagt.:
Hmja danke ich hab die Threads mal gelesen.
Aber es gibt dort ausser der Feststellung, dass die Grösse ein Problem werden könnte leider keine Grossartige Hinweise.
Schau Dir Deinen zweiten Ansatz an und dann lies meinen Beitrag und die beiden Threads nochmal. Da steht mehr, als nur Probleme mit großen Datenmengen.
 
Ich denke, ich werde es doch so lösen, dass ich fuer jeden UNgelöesenen Post einen DB eintrag mache.
DIeser wird dann entweder Durch lesen des posts des jeweiligen users gelöscht,
oder aber nach eine von mir bestimmten Zeit (z.b. 1 Monat)
So sollte das für meine zwecke genügen denke ich, und die Grösse der Tabelle wird sich im Rahmen halten.


Danke fuer die Hilfe!

Gruß
Frank
 
ma so ne frage, hab mir auch gedanken drüber gemacht ber das thema: wenn du jeden login eines users speichern würdest(und vielleicht wenn er 5 logins voll hat oder so alle die länger her sind löschst) und dir die letzten beiden logins ausgeben lässt und es schaffst auf den vorletzten login zuzugreifen (oder andere möglichkeit bei jedem login den login davor in eine tabelle schreiben lässt, die dann immer die vorletzten logins hat (vielleicht einfacher)) dann hättest du doch die zeit zum vorletzten login und könntest die zeit mit dem des letzten postings vergleichen....

phpbb2 machts mit sicherheit anders, da du dort ja beim klick auf den post das "gelesen" verschaffst
 
Hallo.

Schon etwas älter das Thema, aber ich denke das passt gut hier her.

Ich habe mir auch ein kleinen Forum programmiert und stehe vor dem gleichen Problem. Da hab ich einfach mal ein bisschen im Quelltext von PHPbb2 Forum rumgestöbert. Die machen das über Cookies. Was ich da jedoch noch nicht verstehe, ist, wenn kein Cookie gesetzt ist, wird laut Code alles als ungelesen markiert. Das ist allerdings nicht so. Kann es sein, dass der Cookie immer gleich wieder gestzt werden, wenn man sie löscht?

mb fanste
 
Zurück