Denkattacke
Christopher Reimann
- php
0 Poldi0 Localhorst0 Christopher0 Stefan E
0 Raik
Derzeit programmiere ich ein Forum und habe die bekannten Relationen erfolgreich implementiert (Kategorie->Forum->Thread->Post) und will nun für den User die Bequemlichkeit anbieten, von ihm ungelesene Threads/Posts in der Foren- und Threadübersicht hervorzuheben.
Dazu gibt es eine Tabelle mit allen IDs der zugehörigen DB-Spalten. Hier wird jeweils abgelegt, was in einem Thread das Neuste ist. Jene Zeilen erhalten ebenfalls eine ID.
Mein Dilemma ist es nun, die betrefflichen IDs (durch logout-timestamps etc.) in die zugehörigen User-zeilen reinzubekommen, ohne damit die Datenbank völlig auszulasten.
Eine Überlegung war es, der Usertabelle eine Spalte "ungelesene_beitraege" hinzuzufügen, die alle IDs im Zeitraum der Abwesenheit eingetragen bekommt und stück für stück wieder ausgetragen bekommt, wenn ein User einen Thread öffnet. -> Hätte aber erheblichen Aufwand zur Folge; allein schon weil jeder neuer Post immer das betreffende Feld in der DB für jeden User aktualisieren müsste und das wird sich zu sehr summieren.
Vielleicht ist eine ganz andere Idee viel hilfreicher. Mir fällt nur keine gute Planung ein. Hilfe brauche ich dringend! (Die Zeit läuft mir davon...)
Vielen Dank,
Christopher
Hi,
Hab jetzt nicht alles kapiert...
Behalte die Information ob ein User einen Beitrag gelesen hat oder nicht einach so lange bis der Beitrag im Archiv verschwindet, dann sollte es ihn auch nicht mehr jucken.
Ausserdem sollte das nur Regestirerten Benutzern zustehen.
Poldi
Hmm, hoffe das ich soweit alles verstanden habe.
Aber du hast doch den Timestamp, wann ein User das Board betritt, also denke ich mal. Und du hast doch bestimmt auch zu jedem Post einen Time stamp wann er erstellt wurde.
Dann müßtest du doch einfach alle Post anzeigen lassen können wo der Timmestamp größer ist als der des letzten Besuches.
Brachst dafür dann natürlich für die User jeweils zwei Tabellen einträge in der DB, einmal Timestamp letzer Besuch und eine weitere in der der aktuelle TS gespeichert wird.
Hoffe das ich jetzt nicht an dem Problem vorbei geredet habe.
(Ähhm, ein fertiges Forum kommt nicht in Frage?)
Gruß
Localhorst
Dann müßtest du doch einfach alle Post anzeigen lassen können wo der Timmestamp größer ist als der des letzten Besuches.
Also, ich würd gern einen Post als gelesen markiert haben, wenn der User ihn geöffnet hat. Der Vorschlag mit den Timestamps würde nur die Möglichkeit bieten, dem User anzuzeigen, welche Posts in seiner Abwesenheit erstellt wurden.
Bsp: User A loggt sich seit 2 Tagen zum ersten Mal ein und checkt kurz seine Mitteilungen, weil ihm wenig Zeit zur Verfügung steht. Er loggt sich wieder aus und schaut abends vorbei. Nun sind aber alle ungelesenen Posts dummerweise unmöglich kenntlich zu machen.
Man müsste irgendwie diese IDs aus der Tabelle mit den aktuellsten Posts/Threads effektiv mit den Usern in Verbindung bringen. Ich weiß nur nicht wie.
Finds aber cool, dass wir gemeinsam drüber nachdenken!
Finds aber cool, dass wir gemeinsam drüber nachdenken!
das tönt ja...
Dein Wunsch scheint mir zimlich aufwändig aber natürlich sehr komfortabel für den User. Wobei aber z.B. phpbb auf dieses Feature verzichtet.
Dein Wunsch scheint mir zimlich aufwändig aber natürlich sehr komfortabel für den User. Wobei aber z.B. phpbb auf dieses Feature verzichtet.
Ich finds eher unverzichtbar, weil es sonst sehr einfach wäre den Überblick zu verlieren. Der Hauptübersicht lässt sich (eher) nicht entnehmen, in welchem Forum die aktuellsten Beiträge vorhanden sind.
Hallo, Christopher!
[...]
ich könnte mir vorstellen, bei jedem besuch die treads mit neueren beiträgen (timestamp) als csv in eine spalte des users einzutragen und beim lesen wieder zu löschen.
also keine permanenten schreiborgien, sondern nur ein db-zugriff beim aufrufen der entsprechenden ansicht.
freundl. Grüsse aus Berlin, Raik