Neuigkeiten:

still alive...

Hauptmenü

Ungelesene Nachrichten Kennzeichnen

Begonnen von pc_fuzzi, 12. Januar 2007, 23:47:27

Vorheriges Thema - Nächstes Thema

pc_fuzzi

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

Es gibt nur zwei Dinge, die unendlich sind: Das Weltall und die Dummheit der Menschen. Beim Weltall sind wir uns jedoch noch nicht ganz sicher. - Albert Einstein



pc_fuzzi

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.

Es gibt nur zwei Dinge, die unendlich sind: Das Weltall und die Dummheit der Menschen. Beim Weltall sind wir uns jedoch noch nicht ganz sicher. - Albert Einstein


Powie

Das ist eine Denkaufgabe  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-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.

pc_fuzzi

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

Es gibt nur zwei Dinge, die unendlich sind: Das Weltall und die Dummheit der Menschen. Beim Weltall sind wir uns jedoch noch nicht ganz sicher. - Albert Einstein


Powie

pForum Technik  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />

all your base are belong to us / Discord