[Datenbank][Forum] gelesen --> JA / Nein
Sorgenkind Mech
- programmiertechnik
moin leutz
also ich hänge immernoch an meinem forum
und ich würde gerne folgendes machen: threads die von einem user gelesen wurden sind normal, ungelesene fett - in der übersicht halt
jeder der das forum "betritt" ist auch als ein spezieller user angemeldet, es gibt keine gäste
so, nu hatte ich mir gedacht, ich könnte entweder:
im datensatz des threads ein array festhalten welcher user ihn bereits angesehen hat (jeder user hat eine gewisse id)
oder:
ich könnte beim user selbst (für jeden user liegt logischerweise ein datensatz in einer benutzertabelle vor) halt vermerken, welche threads er schon besuchte
beide varianten finde ich allerdings etwas unpraktisch, auch wenn sie sicherlich einfach zu realisieren sind....
kann mir jemand sagen, wie das besser zu realisieren wäre?
PS: ich möchte die information schon serverseitig haben
gruß
moin...
viellicht guckst die mal folgende methode an...
du speicherst das datum an dem der user das letzte mal online war. dann makiert du alle die einträge die seit dem neu hinzugekommen sind.
gleichzeitig überschreibst du das alte datum mit dem aktuellen.
so sind zwar nicht alle, jemals erstelltn und von ihm noch nicht gelesenen nachrichten fettgeschrieben aber das halte ich auch für unnötig.
tschau
hi
das hatte ich auh schon angedacht, zumal bei jedem zugriff die sessionid aktualisiert wird, welche unter anderem datum und zeit enthält
aber, sobald der user weg is und sich ma eben neu einloggt gelten die beiträge, die zuvor ungelesen waren, und vor seinem vorherigem login halt waren auf einmal als gelesen, was ja nich sinn und zweck der sache ist
das forum wird auch nur 2 tage benutzt, dann wird archiviert und neu aufgesetzt (hat seinen grund)
bis dahin
gruß
Hi,
ich hab noch ne bessere Idee.
Nennt man gezielte Denormalisierung:
Bau in die Thread-Tabelle drei zusätzliche Spalten ein. Und wenn einer Deiner User den Thread gelesen hat, schreibst Du "normal" rein und sonst steht halt "bold" drin. Mehr als drei User hast Du sowiso nicht *ggg* und dann kannst Du den Inhalt des Feldes gleich als Attribut für style="font-weight:$viewed; ..." nehmen.
Na, und wenn es dann mehr als drei User werden, nimmst Du eben soch die Viewed-Tabelle dazu und schreibst direkt den Wert aus dem Feld $viewed hinters font-weight. Font-weight:; ist dann Normal.
Grüße
Chris (C)
[scnr]
Hallo,
also im Sinne der Datenbankmodellierung wäre ich für die gute alte Querverweistabelle vom User zum Thread
THREAD
-------
ID
Topic
...
USER
-------
ID
UserName
...
THREADS_VIEWED
-------
THREAD.ID
USER.ID
In der Abfrage würde ich dann bei der Anzeige des Threads einen LEFT JOIN in die VIEWED-Tabelle reinmachen unter Verwendung von THREAD-ID und USERID des angemeldeten USERS. Ist dann die entsprechend abgefragte DUMMY Salte NULL war er noch nicht da, sonst ist der Thread bereits betrachtet worden.
MfG
Rouven
hey das is ne gute idee!!! auch wenn sie mehr traffic bedeutet ;)
vielen dank
Hi,
ähm, mehr TRAFFIC? Hab ich da irgendwas nicht verstanden? Wenn du das alles serverseitig machst, dann bedeutet das doch nur ein Wenig mehr Datenbanklast weil du einen weiteren JOIN machst und ein wenig mehr Prozessorlast weil dein PHP immer noch eine Prüfung machen muss (die du in irgendeiner Form eh gemacht hättest). Zahlst du für deinen DB-PHP-Verkehr?
Eigentlich sollte dir das keine Nachteile bringen...
MfG
Rouven