Feststellen ob neue Beiträge vorhanden sind oder nicht

LordoftheBord

Mitglied
Hallo

Ich programmiere gerade ein Forum. Klappt eigentlich alles auch ganz gut, nur hab ich jetzt ein Problemchen.

Wenn man sich auf diesem Board hier anmeldet, werden ja die Bilder vor dem Beitrag orange gemacht wenn es neue Beiträge seit dem letzten Besuch gab, und weiß gemacht, wenn es keine neuen Beiträge gibt. So etwas möchte ich jetzt auch bei mir einfügen, aber ich weiß nicht ganz wie...

Könnt ihr mir vielleicht 'nen Tipp geben wie ich das machen könnte?

mfg
LotB
 
Vom Prinzip her brauchst du:
1. Die Information, wann ein User zuletzt da war.
2. Die information, wann ein Beitrag erstellt wurde.

Diese Infos vergleichst du und schon weißt du, ob ein Beitrag für einen User neu ist oder nicht.

Gruß
Falk
 
Die Frage ist nur, wann die Information, wann ein User zuletzt da war, gesetzt wird. Bei diesem Forum hier kann ich nach 2 Stunden wieder drauf schauen, und dann sind immernoch die Beiträge von vor 2 Stunden als "neu" markiert.
Somit wird der Timestamp ja nicht gleich zu Beginn neu gesetzt !?
Hängen da noch Cookies mit drin...?

bye
 
Hmm... Hab das jetzt mal ausprobiert. Wenn sich der Benutzer auslogt wird der zeitpunkt in die DB geschrieben:

Code:
$zeit_logout=time();
...
$sql = "UPDATE table_benutzer SET benutzer_letzter_besuch ='$zeit_logout' WHERE benutzer_id=$s_benutzer_id";

Wenn man sich nun wieder einlogt kommt folgende Abfrage:

Code:
					<? 
						if ($benutzer_letzter_besuch<=$thread_datum) 
						{	 
						echo $t_benutzer[$j]["benutzer_letzter_besuch"]." >= ".$thread_datum
					?>
							<img src="old.gif" border="0">
					<? 
						}
						if ($benutzer_letzter_besuch>=$thread_datum) 
						{
						echo $t_benutzer[$j]["benutzer_letzter_besuch"]." <= ".$thread_datum
					?>
							<img src="new.gif" border="0">
					<? 
						}
					?>

...wobei "$thread_datum" das Datum darstellt, an dem der jeweilige Thread erstellt wurde. Nur leider funtzt das nicht. Egal wann ich mich ausloge, alle Themen werden als "gelesen" dargestellt.

Wisst ihr woran das liegt?

mfg
LotB
 
Die Lösung ist auf jeden Fall ein Vergleich zwischen den Erstellungsdaten des letzten Posts in jedem Thread und das Datum der letzten Besuchs (wie ja bereits erwähnt wurde).
Um dabei möglichst genau zu sein, würde ich für jeden User zwei Felder für Timestamps in der Datenbank anlegen. Das eine hält jeweils das vorletzte Logindatum bereit und das andere das aktuelle. Also z.B. Felder mit dem Namen "login_last" und "login_new". Beide werden mit 0 als Defaultwert initialisiert. Wenn sich ein Nutzer nun einloggt, setzt du login_last auf den Wert von login_new und login_new bekommt den aktuellen Timestamp (also z.B. über time()). Nun vergleichst du bei der Threadübersicht die Daten der letzten Posts der Threads mit dem login_last Feld. Der Wert des login_last Feldes ist ganz zu Anfang natürlich 0. Daher werden alle Beiträge als ungelesen markiert (ist ja schließlich das erste Mal, dass der User sich eingeloggt hat). Wenn er sich nun zu einem späteren Zeitpunkt wieder einloggt, wird wiederum login_new in login_last kopiert und somit enthält login_last das Datum des letzten Besuchs. Das Feld login_new bekommt nun wieder entsprechend den neuen Timestamp usw.

Ist das System ungefähr klar geworden? :)
 
Zurück