Forum Feature

mgd-one

Erfahrenes Mitglied
Hallo zusammen,

kann mir jemand die Funktion erklären wie man in einem Forum die neuen Beiträge makiert

Ich meine damit das wenn ich mich einlogge im Forum, dass alle Post makiert sind die ich noch nicht gelesen habe.

Ich brauch auch nur die Technik das Programmieren sollte ich selbst hin bekommen. Hab nur leider im mom keine Idee wie das funktionieren könnte.

Außerdem würde ich gerne wissen wie ich eine bad-word liste erstelle so das ein string nach den Wörtern aus der Liste sucht und diese auskommentiert.

MfG mgd-one
 
hmm sicher bin ich mir nicht, aber man könnt ja,
zu jedem User in der DB festhalten, wann er zuletzt auf der Seite war,
also z.b. einen Unixtimestampt oder ein SQL-Datetime wie auch immer.
Wenn er sich neu einloggt, vergleichst du einfach das Datum des Posts
mit dem des letzten Besuchsdatums (welches natürlich bei erneutem Login
nicht überschrieben werden darf, jedenfalls nicht sofort, da müsste man sich vielleicht noch was einfallen lassen).
Vielleicht hilft dir das weiter.
 
Genau so kannst du es machen!

Wie da das mit der Badwordliste machst:

Du machst eine Tabelle in der DB und füllst die mit Badwords, dann liest du alle aus und überprüft mit jedem Bad-Word ob das Wort im String den du durchsuchen willst vorhanden ist, wenn ja ersetze es :-)

Mit der Funktion str_replace() kannst du Zeichen ersetzen...
 
Die Lösung von Ben Ben zeigt aber nur auf, wie man alle neuen Posts seit dem letzten Login markieren kann, aber noch nicht die ungelesenen seit dem letzten Login. Denn wie auch hier kann ich ja auch welche schon gelesen haben, andere wiederum nicht.

Gruß,
matt
 
Danke schon mal für die Hilfe, aber ich meinte eher das auch für die leute die sich nicht eingetragen haben die neuen Posts angezeigt werden. Wie z.B. die viseted funktion bei einem Link allerding würde ich sie gerne bei einem Bild haben.

MfG mgd-one
 
also wenn man sich dieses Forum hier mal anschaut, fallen mir ein paar Sachen auf:

Nur die Beiträge seit meinem letzten Besuch verändert wurden, werden als solches markiert. Das lässt den Schluß zu, dass in der Datenbank mein letzter Login gespeichert wurde oder zumindest mein letzter Zugriff auf einen Thread. Dumm nur dass ich mich eben wieder eingeloggt habe und somit den Wert des letzten Logins überschrieben habe.

Lösung: Überprüfung ob ein Cookie gesetzt ist, dass den letzten Zeitpunkt vor dem aktuellen Besuch speichert. Wenn es das nicht gibt, muss der User gerade wieder neu zu Besuch sein und es wird ein Cookie erzeugt, das den letzten Besuch festhält. Gibt es das Cookie, sollte das natürlich nicht aktualisiert werden. Das Cookie sollte eine kurze Lebensdauer haben (30 Minuten oder beim schließen des Browserfensters). Diese Cookie Überprüfung sollte natürlich VOR dem aktualisieren des letzten Besuchszeitpunkts erfolgen.

Das markieren der gelesenen Threads ist in diesem Forum eine andere Sache wie die Markierung der neuen Threads. Also würde ich die gelesenen Threads ebenfalls in einem Cookie speichern, als Array zum Beispiel oder einem String mit Trennzeichen, den man leicht exploden kann.

Das wäre mein Ansatz.

Ciao, Jörg
 
Vor diesem Problem stehe ich auch gerade. Schön, dass ich noch einen Thread dazu gefunden habe. :)

Ich setze die Besuchszeit per set_cookie() mit einem Timestamp. Dann lese ich die aktuelle Zeit mit time() aus. Ich weiss aber nicht, wie ich die Vergangene Zeit des Threads berechne. Ob der Thread dann nun von mir gelesen wurde, werde ich dann via MySQL lösen.

Ich würde mich auf eure Hilfe freuen. :)
 
Tabelle: ThreadsViewsPerUser
ThreadID | UserID | LastViewed (Timestamp)

Wenn einm Post in einem Thread neuer ist als LastViewed, dann markier als ungelesen!
 
Zurück