ungelesene threads usw
nuji
- php
Hi,
bin dabei ein kleines Forum zu programmieren...
nun meine Frage, wie ist es üblich die ungelesenen Threads herauszufinden bzw. zu speichern?
Dachte daran, dass ich in meiner Benutzertabelle eine Spalte anlege, in der die thread_ids durch ein trennzeichen getrennt gespeichert werden.
Schreibt nun jemadn einen neuen Thread wird die thread_id bei jedem Benutzer in diese Spalte dazugeschrieben.
Ruft dieser Benutzer die Seite aus, können die Thread, deren id in der Spalte steht ganz einfach hervorgehoben werden.
Ist das sinnvoll so?
gruß
Hallo!
Ich habe nichts mit PHP am Hut, und auch noch nie ein Forum programmiert.
Aber mir (und nicht nur mir [1]) kommt die Idee, dass das ganze doch einfach durch CSS übernommen werden könnte, oder? Die Farbe der Links, die zu gelesenen Threads führen sehen anders aus, als die für ungelesene. Oder? Das finde ich zumindest einfacher als deine Lösung.
Warum sollte man dann noch mit PHP arbeiten?
ciao, ww
[1] Das SELFHTML-Forum macht es dir vor ;)
Hallo,
Ich denke nicht, dass das Problem darin besteht wie die ungelesenen Threads aussehen, sondern überhaupt zu wissen, welche Threads gelesen/ungelesen sind. Und das ist dann schon Sache von PHP/SQL.
Grüße, Thomas
Hallo!
Und warum sollte der Dev das wissen? Der User sollte das natürlich wissen. Und da wäre dann CSS dafür geeignet. Ich habe soetwas ja noch nie gemacht, daher kann es sein, dass ich etwas übersehe, aber interessieren würde es mich trotzdem.
ciao, ww
Hello,
Und warum sollte der Dev das wissen? Der User sollte das natürlich wissen. Und da wäre dann CSS dafür geeignet. Ich habe soetwas ja noch nie gemacht, daher kann es sein, dass ich etwas übersehe, aber interessieren würde es mich trotzdem.
ja, du übersiehst etwas sehr zentrales: History ist browserspezifisch. Was mache ich also, wenn ich wie gerade meinen Schreibtischstuhl von rechts nach links drehe und von Notebook auf Desktop wechsele. Soll ich dann mein Erinnerungsvermögen strapazieren? Ne, das Forum soll an meiner Benutzerkennung festmachen, wo ich schon war - wie es dieses hier tut...
MfG
Rouven
Hallo!
Ah. Ok. Danke schön.
ciao, ww
echo $begrüßung;
bin dabei ein kleines Forum zu programmieren...
Auch wenn du das in PHP machst ist das doch ein eher Datenbank-technisches Problem. Und damit dies die Spezialisten besser finden solltest du die Kategorie bedachtsamer auswählen.
nun meine Frage, wie ist es üblich die ungelesenen Threads herauszufinden bzw. zu speichern?
Üblich sind verschiedene Vorgehensweisen. Die einfachste wäre, den letzten Besuchszeitpunkt zu notieren, z.B. in einem Cookie und alle neueren Beiträge als solche zu kennzeichnen. Doch das ist nicht sehr komfortabel für den Anwender. Deswegen willst du das ja auch threadfein oder noch besser beitragsfein speichern.
Die "üblichen" Vorgehensweisen kannst du ja den quelloffenen Projekten entnehmen. Beim Schmökern in fremdem Code kann man auch noch jede Menge anderer Dinge lernen. (Manchmal auch, wie man es besser nicht machen sollte ...)
Dachte daran, dass ich in meiner Benutzertabelle eine Spalte anlege, in der die thread_ids durch ein trennzeichen getrennt gespeichert werden.
Schreibt nun jemadn einen neuen Thread wird die thread_id bei jedem Benutzer in diese Spalte dazugeschrieben.
Ruft dieser Benutzer die Seite aus, können die Thread, deren id in der Spalte steht ganz einfach hervorgehoben werden.
Ist das sinnvoll so?
Nicht besonders, finde ich. Beim Beitrag-Schreiben müssen sämtliche Benutzerdatensätze angefasst werden. Je mehr Benutzer das System hat, desto mehr Aufwand bedeutet das. Eine weitere Tabelle, die für jede Benutzerkennung und jeden gelesenen Beitrag einen Eintrag bekommt wäre eine weitere Möglichkeit. Die ungelesenen erkennst du daran, dass die Beiträge dort nicht enthalten sind (bei einem LEFT JOIN kommt auf der rechten Seite NULL raus). Doch da sammelt sich im Laufe der Zeit auch recht viele Daten an, die auch noch erhalten bleiben müssen, wenn es kein Archiv für alte Fäden gibt, für die kein Gelesen-Status mehr gespeichert werden muss. Andererseits sind Datenbanksysteme für den Umgang mit großen Datenmengen ausgelegt. An dieser Stelle gebe ich aber an die Datenbankexperten ab ...
echo "$verabschiedung $name";
Hi,
ja hast du natürlich recht, dass es ein Datenbank-Thema ist...tut mir leid hab ich verpennt...
Also ich denke eine Tabelle wie du sie vorgeschlagen hast ist halt dann schon irgendwann riesig...
Aber meins ist denke ich auch nicht DIE Lösung, deswegen habe ich gedacht ich frage hier mal leute...
gruß
Hello,
ich gebe halt eines zu bedenken: ich garantiere dir, dass du bei deiner Lösung in wenigen Wochen oder Monaten hier im Forum aufkreuzt, weil du aus deinem Trennzeichen-Feld irgendetwas wissen willst, wo die normalen Funktionen von SQL nicht mehr reichen oder zumindest extrem umständlich zu nutzen sind. Ich persönlich bin absoluter Gegner von solchen Lösungen, weil ich in der Vergangenheit mehrfach damit auf die Schnauze gefallen bin (einzige Ausnahme: die Datenbank bietet von Haus aus einen SET-Typ mit entsprechender Logik an). Datenbanken brauchen bei aktuellen Rechnern schon ziemlich lange, bis eine Datenmenge zum Problem wird, Indizierung hilft bei effizienter Verwaltung der Daten. Also eine Tabelle userid-threadid oder postid für die gelesenen wird dich bestimmt nicht umbringen und eröffnet auf einfach Weise Auswertungen wie "gib mir nur die Threads, die ein Nutzer gelesen hat", "gib mir alle Threads, die der Nutzer nicht kennt" usw.
MfG
Rouven