closed
Goto Top

neue Beiträge hervorheben

Hallo,

derzeit arbeite ich an einem kleinen PHP-Webportal. Ich möchte nun als zusätzliche Funktionalität das Hervorheben von neuen Beiträgen anbieten. Habe mir auch schon ein zwei Gedanken dazu gemacht.

Vorschlag 1(dieser fällt weg):
Realisierung mittels Cookies. Ich lese beim Login den Wert des letzten Logins aus, speicher ihn in einer Session Variablen und vergleiche diesen Wert immer mit dem Datum, an dem der Datensatz angelegt wurde. Problem hierbei ist aber: Wenn mann auf den Datensatz klickt, wird er weiterhin als "nicht gelesen" markiert, da der Zeitwert sich erst wieder ändert, wenn man sich neu einloggt.

Vorschlag 2:
Ich lege eine neue Tabelle an, in der ich bei Neuanlage eines Datensatzes alle Mitglieder anlege und die ID des Datensatzes speichere. BEim Aufruf der Überischtsseite muss geguck werden, ob der User für den DS in der Tabelle vorhanden ist. Wenn er vorhanden ist, so wird der DS als nicht gelesen markiert. Beim Klick wird ein delete auf den DS gemacht. Problem hierbei ist, dass ich natürlich mehr als eine Tabelle verwalten muss. Es kann also zu Überschneidungen beim primary Key kommen. Es ist nicht eindeutig zuordbar aus welcher Tabelle der Key stammt.

Ich bin um jede Hilfe dankbar.
Google bringt leider auch nichts brauchbares hervor.


Vielen Dank schon mal vorab

Content-Key: 101371

Url: https://administrator.de/contentid/101371

Printed on: April 23, 2024 at 07:04 o'clock

Member: ITLocke
ITLocke Nov 09, 2008 at 15:38:01 (UTC)
Goto Top
Hallo Closed,

warum meinst du, kann es zu Überschneidungen kommen?

Wenn du die Tabelle mit den Attributen UserID, Tabelle und DatensatzID anlegst
und alle drei als Primärschlüssel setzt, sollte es doch gehen.
Member: Closed
Closed Nov 09, 2008 at 18:10:10 (UTC)
Goto Top
Naja ganz einfach. Ich habe beispielsweise eine Tabelle Aufgaben und eine Tabelle Meeting. Bei haben einen Primärschlüssel. Diese beginnen beide bei 0 und haben somit eindeutig Überschneidungen. Es ginge nur, wenn ich alles Tabellen, die ich verwalten will als Feld anlege und nur in das entsprechende Feld den Primärschlüssel der Tabelle eintrage.

Beispiel:
tblNeuigkeiten (id, userID, aufgabenID, meetingID)
erhalte ich nun einen neuen DS in der Tabelle meeting, so müsste ich für jeden User einen DS anlegen wobei die Felder id, userID und meetingID ausgefüllt werden. aufgabenID bleibt leer. Wenn nun der User auf den neuen Eintrag klickt, wird sein DS aus der Tabelle gelöscht und ich weiß, dass er den DS schon gelesen hat.

Wie schon gesagt: Finde die Lösung etwas kompliziert und weiß nicht, ob es eventuell einfacher ginge.
Member: ITLocke
ITLocke Nov 10, 2008 at 08:04:53 (UTC)
Goto Top
So kompliziert ist sie nicht. Mir würde auch momentan keine bessere einfallen.

Nochmal zu meinem Vorschlag:

Obige Tabelle besteht nur aus Primärschlüsseln.Mit dem Attribut id hab ich persönlich schon schlechte Erfahrungen gemacht hinsichtlich Datenredundanz, vor Allem, wenn du es per Autoincrement mit Werten füllst.
Das Attribut Tabelle beinhaltet die Namen der entsprechenden Tabellen (also 'meeting' oder 'aufgaben' etc.)
Somit hast du die Möglichkeit, neue Einträge in beiden Tabellen (aufgaben, meeting) in einer minimalen Tabelle(Neuigkeiten) abzuhandeln.
Aussehen würde das wie folgt:
UserID Tabelle DatensatzID
001 'aufgaben' 003
001 'meeting' 301
002 'aufgaben' 403
...

Das Eintragen und Löschen der Datensätze sollte ja kein Problem darstellen.

PS: UserID kannst du auch als Fremschlüssel aus deiner UserTabelle eintragen.
Member: masterG
masterG Nov 10, 2008 at 17:45:40 (UTC)
Goto Top
Vorschlag 1 scheint mir am Sinnvollsten. Aber da darf der User die Cookies nicht löschen. Da musst du noch dazu eine Datenbank Lösung finden.

mfg