Sorgenkind Mech: [Datenbank][Forum] gelesen --> JA / Nein

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ß

  1. 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

    1. 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ß

      1. 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]

  2. 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

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. hey das is ne gute idee!!! auch wenn sie mehr traffic bedeutet ;)

      vielen dank

      1. 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

        --

        -------------------
        ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(