Wie zeigen Foren ungelesene Themen an?

8

Ich habe Benutzerdiskussionsforen, die ich in php / mysql codiert habe. Ich möchte wissen, wie die großen Namenforen zeigen können, welche Themen neue Beiträge in ihnen haben, normalerweise durch Ändern eines Symbolbildes neben dem Thread ohne zu verwenden kaum Ressourcen?

    
JasonDavis 04.01.2010, 03:40
quelle

5 Antworten

7

Der einfachste Weg besteht darin, zu verfolgen, wann das letzte Mal jemand eingeloggt war. Wenn sie zurückkommen, ist alles, was seitdem aktualisiert wurde, offensichtlich "neu".

Dies hat jedoch einige Probleme, da das Abmelden alle Elemente als gelesen markiert.

Die einzige andere Möglichkeit wäre, eine Tabelle zu erstellen, die alle Threads und den letzten Post in diesem Thread enthält, den jeder Benutzer gesehen hat.

%Vor%

Mit diesen Informationen, wenn es einen Beitrag in Thread # 5 gibt, der eine ID größer als 15 hat, dann weißt du, dass dort ungelesene Posts sind. Aktualisieren Sie diese Tabelle nur mit der Post-ID des letzten Beitrags auf dieser Seite . Das bedeutet, wenn drei Seiten mit neuen Posts vorhanden sind und der Benutzer nur den ersten Post anzeigt, weiß er immer noch, dass ungelesene Posts vorhanden sind.

    
nickf 04.01.2010, 03:43
quelle
0

Wie oben erwähnt, außer dass die Threads, die der Benutzer tatsächlich besucht hat, verfolgt werden. Alles, was der Benutzer nicht besucht hat, gilt als neu für diesen Besucher. Für eine feinere Kornkontrolle werden alle Threads ignoriert, die vor der Registrierung des Benutzers erstellt wurden, und möglicherweise werden Threads ignoriert, die nicht innerhalb eines bestimmten Zeitraums besucht wurden. Dies würde verhindern, dass jeder nicht besuchte Thread ein neuer Thread für sie wird.

Natürlich gibt es viele Möglichkeiten, eine Katze zu häuten und abhängig davon, was die Entwickler des Forums wollten, kann das oben Angezeigte geändert werden, um

zu passen

DC

    
DeveloperChris 04.01.2010 03:54
quelle
0

Sie könnten das letzte Mal, als sie dieses Thema ausgewählt haben, protokollieren und dann sehen, ob ein Beitrag einen späteren Zeitstempel hat als ihr letzter "Klick" auf den Thread.

    
bobber205 04.01.2010 03:55
quelle
0

Sie könnten eine spezielle Tabelle in Ihrer Datenbank mit Spalten wie USER_ID und THREAD_ID und mit entsprechenden Einschränkungen für Ihre USER- und THREAD-Tabellen und einen Primärschlüssel mit USER- und THREAD-IDs erstellen.

Wenn jemand einen Thread öffnet, fügen Sie einfach das USER-THREAD-PAIR in diese spezielle Tabelle ein.

In Ihren Thread-Listen können Sie jetzt einfach die Tabelle an die jeweils passende Stelle anschliessen. Wenn Ihre neue Tabelle an einer bestimmten Stelle NULL enthält, ist dieser Thread ungelesen. Dies aktiviert Listen wie:

  • Alle Threads mit "ungelesener" Markierung
  • Alle ungelesenen Threads
  • Threads gelesen von Benutzer XY

Wenn Sie dieser Tabelle eine Datumsspalte hinzufügen, können Sie noch interessantere Dinge tun.

Behalten Sie Ihre Schlüssel und Indizes im Auge, um zu starke negative Auswirkungen auf die Leistung zu vermeiden. Versuchen Sie aus der USER-THREAD-Tabelle nur zu lesen, indem Sie sie in Ihre bestehenden Abfragen einfügen. Das funktioniert viel schneller als die Ausführung einzelner Abfragen die ganze Zeit.

    
selfawaresoup 04.01.2010 14:54
quelle
0

Sie könnten eine Tabelle haben, die eine Einfügung erhält, wenn ein Thread gelesen wird, wenn der Benutzer sie nicht bereits gelesen hat. Wenn dann jemand zu dem Thread hinzufügt, können Sie alle Einträge in der Tabelle für diesen Thread löschen, wodurch er für alle Benutzer ungelesen wird.

Die Tabellenstruktur wäre etwas wie

%Vor%

Mit dem optionalen Extra has_read_id für Ihren Primärschlüssel, wobei die anderen Felder einen zusammengesetzten Schlüssel bilden.

    
Matt Ellen 04.01.2010 15:03
quelle

Tags und Links