PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Benutzer Interaktionen


eNto
2010-03-15, 18:22:04
Hallo,

Wie man ja von Facebook etc. kennt sieht man wer sein Profil besucht hat, ob man neue Messages hat oder neue Posts in einem Thread gibt oder whatever.

Jetzt versuche ich soetwas auch bei mir einzubauen, nur fehlt mir irgendwie der richtige Ansatz, bei den Nachrichten (PN) hab ich es einfach so gemacht, das es ein eine Spalte in der Tabelle gibt, die NULL ist und sobald man die Nachricht öffnet dieses durch das aktuelle Datum ersetzt wird, dh. alle Nachrichten mit dem Wert null sind neu.

Wie kann ich das aber auf zbsp. Kommentare unter einem Artikel übertragen?

Also im Prinzip würde ich hier sobald der User auf den Artikel geht, das Datum des letzten Beitrages speichern, wenn jetzt ein neuer Beitrag kommt dann werden die Daten vergleichen und wenn das des neuen Beitrages neuer ist als das vom User gespeicherte gibt es einen neuen Beitrag.

Soviel zu meiner Theorie nur weiß ich nicht wie ich das ganze in gutem Stil umsetzten kann.

Ich hab dann an 5 Tabellen gedacht Artikel, Kommentare, User, Beobachtete_Kommentare, und Aktivitäten.

Beobachtete_Kommentare sieht so aus:
ID---ArtikelID---UserID---Datum

mit:
UserID beobachtet Artikel mit der ID ArtikelID ob es neue Kommentare gibt.
(Diese Tabelle, weil User selber bestimmen soll welchen Artikel er beobachtet was ja logisch ist)

Aktivitäten:
ID---ArtikelID---UserID---Datum1---Datum2---Gelesen

mit:
Datum1 = letzter vom User gelesener Kommentar
Datum2 = neuster Kommentar
Gelesen = User hat neuen Kommentar zur Kenntnis genommen (ja/nein)


Also nun zur Frage, macht man das so in der Regel? Weil irgendwie, brauch ich ja dann ewig viele Tabellen wenn ich nicht nur Kommentare, sondern Profilbesucher und das ganze andere Zeug überprüfen muss, auch mach ich mir sorgen über die Performance wenn ich immer mehrere Querys an den Server senden muss.

DanMan
2010-03-15, 19:18:43
Willkommen, Fettsack. ;)

Definiere "gelesen".

Unter Umständen gehts auch über die Anzahl der Kommentare. Wenns mehr als beim letzten Mal sind, dann gibts neue.

eNto
2010-03-16, 16:24:22
Willkommen, Fettsack. ;)

Definiere "gelesen".

Unter Umständen gehts auch über die Anzahl der Kommentare. Wenns mehr als beim letzten Mal sind, dann gibts neue.

Hi,

gelesen im Sinne von, der User war auf der Seite auf der das Kommentar (whatever) steht.

Bsp:
http://test.de/index.php?id=3847

d.h war der user auf dieser Seite, dann hat er die Kommentare dieses Artikel mit der ID 3847 "gelesen".

DanMan
2010-03-18, 00:06:30
Hi,

gelesen im Sinne von, der User war auf der Seite auf der das Kommentar (whatever) steht.

Bsp:
http://test.de/index.php?id=3847

d.h war der user auf dieser Seite, dann hat er die Kommentare dieses Artikel mit der ID 3847 "gelesen".
Ja, aber bis zu welchem Zeitpunkt? Darum gehts doch. Bis zu dem Zeitpunkt, als er die Seite das letzte Mal aufgerufen hat, oder?

Ich verstehe irgendwie garnicht, wo dein Problem ist. Du hast es doch schon ausformuliert:sobald der User auf den Artikel geht, das Datum des letzten Beitrages speichern, wenn jetzt ein neuer Beitrag kommt dann werden die Daten vergleichen und wenn das des neuen Beitrages neuer ist als das vom User gespeicherte gibt es einen neuen Beitrag.
Wenn er die Seite aufruft speicherst du irgendeine Zeiger auf den letzten Kommentar. Ob das jetzt das Datum, die ID oder sonst was ist bleibt dir überlassen.

eNto
2010-03-18, 14:53:09
Ja, aber bis zu welchem Zeitpunkt? Darum gehts doch. Bis zu dem Zeitpunkt, als er die Seite das letzte Mal aufgerufen hat, oder?

Jap


Ich verstehe irgendwie garnicht, wo dein Problem ist. Du hast es doch schon ausformuliert:
Wenn er die Seite aufruft speicherst du irgendeine Zeiger auf den letzten Kommentar. Ob das jetzt das Datum, die ID oder sonst was ist bleibt dir überlassen.

Ja ich wollte wissen, ob das die beste Methode ist oder man das irgendwie "besser" lösen kann, so arg lange beschäftige ich mich noch nicht mit PHP und MySql desshalb wollte ich halt meinen Denkansatz kundtun um vielleicht Verbesserungsmöglichkeiten zu erhalten, denn oft kann man ja Dinge lösen was aber nicht heißt das sie "gut" gelöst sind.

Aber das scheint mir auch die einzige logische Lösung zu sein, wie soll es auch anderst gehen.


OffTopic:
Ich hab schonmal Einträge in die DB per schleife geschrieben, bis ich dann erfahren musste wie sehr das an die Performance geht und mein Script nochmal umschreiben konnte, jetz frag ich halt bei Dingen bei denen ich mir nicht sicher bin lieber vorher ^^