Forum Feature

Du erstellst eine weitere Tabelle für dein Forum.
Diese enthält 3 Spalten, mit der Thread-ID, der User-ID und einem timestamp.
Der Timestamp wird immer aktualisiert, wenn der User in dem Thread unterwegs ist.

Welche Threads sind neu?
Hol den Timestamp vom letzten Post in jedem Thread, und schau ob der Timestamp in der Tabelle oben größer ist. Wenn ja, dann war ich schon in dem Thread, er ist also nicht neu.

Nachteil:
Du hast zwischen jedem User und jedem Thread eine Beziehung in der Datenbank stehen.
 
[...]
Nachteil:
Du hast zwischen jedem User und jedem Thread eine Beziehung in der Datenbank stehen.
Nicht zwingend. Man hat nur für jeden Thread, der vom User besucht wurde, einen Eintrag in der Tabelle. Sollte er den Thread gar nicht besucht haben, so braucht man ja keinen Eintrag in der Tabelle, da der Thread in jedem Fall ungelesen ist.
 
Hat mir leider auch nicht geholfen. :/

Ich würde mich freuen, wenn jemand von euch mir ein Scriptbeispiel geben könnte. Ich kann von der Praxis nämlich besser lernen als von der Theorie. So lerne ich die Dinge auch besser zu verstehen. :)

Vielen Dank im Voraus.
 
Nicht zwingend. Man hat nur für jeden Thread, der vom User besucht wurde, einen Eintrag in der Tabelle. Sollte er den Thread gar nicht besucht haben, so braucht man ja keinen Eintrag in der Tabelle, da der Thread in jedem Fall ungelesen ist.
Wenn aber nun alle fleißig sind und sowohl alle Threads besuchen als auch neue eröffnen, steigt der Speicherbedarf sehr schnell an. Alleine bei 100 Benutzern und 100 Threads sind das schon 100*100 Datensätze.
 
Es sollte auf jeden Fall eine Balance zwischen der Zeit des letzten Posts und den gelesenen Posts. Man kann es z.B. so regeln, dass nur Beiträge, die jünger als 7 Tage sind auch als 'neu' angezeigt werden.

Wenn ein User nun einen solchen 'jungen' Beitrag liest, so kann man den Thread und den dazugehörigen Post in einer Datenbank oder auch in der Session speichern.

Beim Auslesen der Threads muss man nun nur noch vergleichen, ob der letzte Post des Threads mit dem übereinstimmt, den der User in der Datenkbank oder in der Session stehen hat. Falls ja, wird angezeigt das er bereits gelesen wurde, falls nein wird eben ungelesen angezeigt
 
Zurück