Jump to content
Sign in to follow this  
pc_fuzzi

Ungelesene Nachrichten Kennzeichnen

Recommended Posts

Hi ich habe ein Problem in Php und es wäre net wenn ihr mir dabei helfen könntet.


Folgendes: Ich habe ein Forum programmiert und würde gerne vom User ungelesene Beiträge als ungelesen anzeigen. Ich habe mir schon überlegt, dass man den letzten Besuch als Timestamp speichern könnte und in einer Datenbanktabelle speichern könnte, welche Beiträge vom Benutzer schon gelesen wurden und welche nicht. Für ein kleines Forum mit wenigen Besuchern wäre das ja auch kein Problem.


Sobald das Forum jedoch mehr Besucher bekommt, die sehr aktiv sind, wird die Tabelle, die speichert welche Beiträge von welchem User schon gelesen wurden und welche nicht, immer größer und man hat bald 100000 oder mehr Zeilen, was die größe der Datenbank unnötig vergrößert.


Deshalb wollte ich jetzt mal fragen, wie dieses Problem in PForum gelöst wurde. Ich erwarte keinen Code oder so, sondern nur eine Idee. Das Coding wäre für mich kein Problem. Wäre echt super, wenn ihr mir helfen könntet.


Mfg pc_fuzzi

Share this post


Link to post
Share on other sites

Was meinste mit link? Einen Link auf das Forum? Den kann ich dir leider net geben, da das Forum nur auf meiner Festplatte auf meinem Apache Testsystem ausgeführt wird. Ich werde es erst benutzen, wenn es fertig ist. Wäre aber trotzdem net, wenn ihr mir helfen könntet.

Share this post


Link to post
Share on other sites

Das ist eine Denkaufgabe :-o


Vielleicht so:

Du benötigst nur zwei Felder in der Datenbank: Wann war der User zuletzt online. Und der aktuelle Zeitpunkt wann der User gerade etwas ansieht. Nennen wir die Felder einfach mal lastlogin und lastonline.


Wenn der User das Forum betritt und lastonline ist über einen definierte Zeit kleiner als der aktuelle Zeitstempel, so wird lastonline in lastlogin gespeichert. Somit ergibt sich der Zeitstepmel wann der User zum letzten mal da war!

Jetzt sind definitiv alle Posts nach diesem Zeitstempel (lastlogin) "neu" und du kannst sie markieren.

Eine Datenbank für die gelesenen Posts benötigst du nicht. Liest ein user jetzt den Post 123, so schreib dies in ein Array welches du in einer Session Variablen speicherst. Bsp: $_SESSION['postread']['123'] = 1 . Posts die dann in diesesm Session Array vorkommen sind eben gelesen, du musst diese nicht mehr markieren.

Die Session wird gelöscht wenn der User nicht wieder kommt, es kostet dich keinen Platz und keine Aufwände in der DB und du benötigst diese Daten auch niemals wieder, da immer nur die interessant sind die neuer als lastlogin sind.

Share this post


Link to post
Share on other sites

Wow danke Powie du hast mir echt geholfen. :H: Ich hab gar net dran gedacht, das ich das ja auch in nem Session Array speichern kann. Ich werds dann genau so machen.


Thread kann geschlossen werden.


Mfg pc_fuzzi

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...