Laden...

ungelesene posts

Erstellt von Savage vor 19 Jahren Letzter Beitrag vor 19 Jahren 4.191 Views
S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 19 Jahren
ungelesene posts

hi,
ich bin gerade dabei ein forum zu coden und frage mich nach der besten möglichkeit ungelesene posts/foren anzuzeigen.

ist es z.b. gut, wenn man einfach alle neuen posts die seid dem letzten login gemacht wurden anzeigt und dann die einzelnen gelesenen in nem cookie oder sessionvar abspeichert?

bin für jede idee dankbar.

U
107 Beiträge seit 2004
vor 19 Jahren

hi,

speichere in der Datenbank, jedesmal die Zeit wann der User das Forum betritt / einloggt und lasse dann alle neuen Beiträge seit dem letzten Besuch anzeigen 🙂.

:::

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 19 Jahren

ja gut, aber was ist wenn er z.b. einen von fünf neuen beiträgen ansieht? wie soll ich kennzeichnen welche er schon gelesen hat? es sollen ja dann nur mehr 4 ungelesene beiträge angezeigt werden.
gelesene extra in cookies, session oder db speichern?

U
107 Beiträge seit 2004
vor 19 Jahren

mh, nein das geht mit dieser Methode natürlich nicht. jedoch wozu möchtest du einen Status für jeden einzelnen Beitrag haben? Wenn ich in einem Forum tätig bin interesseirt mich zb. das Thema Linux überhaupt nicht und sehe mir auch keinen Beitrag dazu an, soll es dann so sein, das alle Beiträg als ungelesen markiert werden? Selbst in diesem Forum gibt es nur einen Link der die Themen der letzen 24h anzeigt !?

Also ich würde es so machen wie oben beschrieben! Der Rest ist zu aufwendig oder speicherintensiv !!

:::

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 19 Jahren

also das ist bei vielen foren so. beispiel:
ich logge mich wo ein, ich gehe in das entsprechende board und sehe vor jedem neuen topic ein anderes ('ungelesen') icon. klicke ich ein solches topic an, lese mir es durch und gehe wieder zurück, dann hat dies ein normales icon und die anderen neuen topics haben noch immer ein 'ungelesen' icon davor.
also ich habe das bei fasst jedem forum so gesehen.

C
1.215 Beiträge seit 2004
vor 19 Jahren

klar, die spezifischen "ungelesen-flags" sollten schon an threads und nicht an foren gebunden sein.
erstelle ein column mit genügend grossem datentyp in deiner user-tabelle, in der du die thread-ids einträgst, die seit dem letzten besuch des users hinzugekommen sind...
...ausserdem muss natürlich auch aktualisiert werden, wenn ein vorhandener thread neue posts erhalten hat.

wenn der user sich wieder einlogged, ein forum betritt und dort einen thread auswählt, wird dessen id wieder aus der entsprechenden zeile der user-tabelle gelöscht.

so bleiben die anderen ungelesenen oder geupdateten threads ein und desselben forums in den personalisierten user-sicht erhalten.

grtz
chief

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 19 Jahren

gute idee, aber ist dann nicht die datenbank-belastung zu hoch, wenn es ein viel besuchtes forum ist?

C
1.215 Beiträge seit 2004
vor 19 Jahren

ne - ich denke nicht...
die namhaften, freien php-foren machen das eigendlich alle so oder ähnlich.

grtz
chief

F
124 Beiträge seit 2004
vor 19 Jahren

also mein vorschlag ist, du machst eine tabelle in der datenbank mit 3 spalten:
thread-id
user-id
letzte-lesezeit

und beim aufrufen einer threadliste vergleichst du nun jedesmal, ob der thread einen post enthält, der neuer als das letzte lesen des users ist, wenn ja, dann hat der thread ungelesene posts. existiert die zeile des letzten lesens für den user nicht, ist der thread ganz neu.

die datenbankbelastung bleibt gering, vorausgesetzt du bist in der lage effizient zu joinen. immerwieder was in schleifen aus der db auszulesen ist tödlich.

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 19 Jahren

danke erstmals für die tipps 👍

42 Beiträge seit 2004
vor 19 Jahren

hm... jo also mir gefaellt das von fabse 🙂

@savage mich wuerde mal das datenbank modell intressieren 🙂 und wie du es letztendlich funktionierend umgesetzt hast/wirst

gruss

S
Savage Themenstarter:in
100 Beiträge seit 2004
vor 19 Jahren

ich habe es jetzt so gelöst:

ich erstelle ein dataset, welches alle neuen post beinhaltet. dieses dataset befindet sich in einer session-variable. wird ein neuer beitrag geschrieben, so wird das dem dataset hinzugefügt. wird ein thema gelesen, dann wird es einfach aus dem ds entfernt. - ich denk mal das ist ziemlich performant und funktionieren tuts wunderbar.

hier kannst du dir das ganze mal anschauen falls es dich interessiert.