ungelesene beiträge anzeigen

pangu

Angesehenes Mitglied
habe eine art forum programmiert, funktioniert auch alles bestens, nur möchte ich jetzt noch die funktion: "ungelesene beiträge markieren" hinzufügen.
sprich wenn ein user in einen thema noch ungelesene beiträge seit dem letzten besuch hat, sollen diese z.b. fett markiert werden.
-> wie lege ich sowas am besten in mysql an? hat da jmd. ideen/erfahrungen? thx
 
habs mir bisher so überlegt:

//tabelle "gelesen":
userid | themaid | beitragsid
jeder user hat also pro thema eine zeile.


-> aktualisieren
wenn ein user jetzt ein thema anschaut, wird die beitragsid auf die letzte aktualisiert.

-> visualisieren
wenn ein user seine themenseite aufruft, wird für jedes thema abgefragt, ob beitragsid (userid) == letzte beitragsid (themaid).
falls nein: es sind neue themen vorhanden


-> ist das so einigermaßen praktable, oder kann man das besser/ressourcenschonender machen?
 
Sieht auf den ersten Blick eigentlich gut aus. Ist aber noch zu früh für mich, so ganz überblick ichs noch nicht ;-)

Woran Du sicher noch denken müsstest, sind neue und gelöschte Themen. Wird ein neues Thema eröffnet, müsstest Du in dieser Gelesen-Tabelle für jeden User einen neuen Record anfügen, mit einem Null oder 0 für die BeitragsID. Beim Löschen eines Themas kannst Du dann entsprechend alle Records mit dieser ThemaID aus der Gelesen-Tabelle löschen; oder drinlassen aber für die Visualisierung rausfiltern.

Wäre noch interessant zu wissen, wie das in diesem Forum hier umgesetzt ist.

Griessli
Irene
 
Ich hab bei mir

UserID | ThreadID | Anlagedatum

und vergleiche dann mit dem Datum des Posts anstatt die BeitragsID immer upzudaten ... aber ist ja im Prinzip dasselbe, außer dass es mich halt nicht kümmert welchen Beitrag er genau noch nicht gelesen hat (weil auf einer Seite ja mal 10, 20 oder 100 Posts angezeigt werden könnten).
 
Hm, ich glaub die einfachste Lösung wäre echt: "threadID, userID, gelesen". Ist zwar irgendwie dreckig, aber was solls.
smile.gif
 
als recht gut und hat sich für mich bewärt:
Speicher bei jedem Seitenaufruf des Benutzers die Zeit.
--
Wenn der Benutzer neu auf die Seite kommt sind alle Themen neu die:
- Ein neueres Datum als das der letzten Besuchszeit des Benutzers haben.

Wenn ein Benutzer auf ein Thema klickt speicherst du dir in einer Session-Variable das er das Thema schon kennt.

Da musst du dann ein wenig rechnen und so aber im prinzip nichts schlimmes
wink.gif


---

Sonst würde ich dir auch deine Methode mit dem Speichern der ID's empfehlen, die Tabelle kann bei vielen Benutzer und Posts halt recht schnell sehr groß werden. Würde auf jeden Fall nur die ID's speichern von Benutzer die ein Thema gelesen haben. Bisserl rechnen und es dir durchdenken musst du bei der Methode auch. Das hat mich da mal irgendwann gestört, deshalb die Alternative *g*
 
ok, vielen dank schonmal für eure anregungen: werde es jetzt glaube ich so wie oben von mir gepostet umsetzen + aus performancegründen jeweils immer nur die letzten 10 Themen in einen forum berücksichtigen. (wenn ein user also die letzten 11 themen noch nicht gelesen hat, werden trotzdem nur die letzten 10 als ungelesen angezeigt).
denke mal dass das akzeptabel & ein guter kompromis ist..
später werde ich das wahrscheinlich noch so ergänzen, dass nur beiträge berücksichtigt werden, die <30 tage alt sind..
 
Zurück
Oben