Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ungelesene posts
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

ungelesene posts

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
UserNeo
myCSharp.de - Member



Dabei seit:
Beiträge: 107

beantworten | zitieren | melden

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 .
cu
UserNeo
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
UserNeo
myCSharp.de - Member



Dabei seit:
Beiträge: 107

beantworten | zitieren | melden

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 !!
cu
UserNeo
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1205

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

gute idee, aber ist dann nicht die datenbank-belastung zu hoch, wenn es ein viel besuchtes forum ist?
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1205

beantworten | zitieren | melden

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


grtz
chief
private Nachricht | Beiträge des Benutzers
Fabse
myCSharp.de - Member



Dabei seit:
Beiträge: 124

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

danke erstmals für die tipps
private Nachricht | Beiträge des Benutzers
Neral
myCSharp.de - Member

Avatar #avatar-1544.gif


Dabei seit:
Beiträge: 42
Herkunft: Bielefeld

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Savage
myCSharp.de - Member



Dabei seit:
Beiträge: 94

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers