Benutzereinstellungen verwalten

versuch13

Erfahrenes Mitglied
Ich möchte Benutzern gerne die Möglichkeit geben eigene Einstellungen zur Darstellung und Verwendungsverlauf einer Webseite geben. So wie man dass von verschiedener Foren Software kennt, wv. Themen sollen mir angezeigt werden, usw.. Das könnten einige Einstellungen werden, 20-30 Stück eventuell. Nun frage ich mich wie ich das am besten anstelle?

Nun habe ich mir folgendes überlegt. Die Einstellungen werden von den Benutzern durch Formulare in einer Datenbank in codierter Form (JSON) gespeichert, das bedeutet ich benötige nur eine Spalte für die Einstellungen in der Datenbank Tabelle des Benutzers.
Beim Login lese speicher ich den JSON Sting in einer Session Variable und falls die Einstellungen benötigt werden decodiere ich sie wieder.

Wie würdet ihr das ganze machen? Könnte ich genauso gut einfach ein Array mit den Werten in einer Session Variable speichern?

Würde mich freuen wenn mir jemand dazu eine gute Vorgehensweise nennen könnte.

Danke!
 
Nun ja.... Spalten in einer Tabelle kosten nichts...sie sind dazu da angelegt zu werden :-)

Wenn du alles codiert in eine Spalte schreibst, ist der Zugriff auf einzelne Einstellungen mehr als umständlich...du beraubst dich damit genau der Vorteile, die eine DB bietet.
 
Da hast du natürlich Recht. Aber wie würdest du dann weiter vorgehen? Die Werte werden häufig zum Einsatz kommen. Würdest du jeden Wert in einer eigenen Session Variable speichern? Oder ein Array in einer Session Variable anlegen? Ich dachte so spare ich ständige DB Abfragen. Aber 20-30 Session Variablen schien mir auch nicht das Wahre zu sein. Wenn ich also doch für alle Einstellungswerte eine Spalte in einer Tabelle anlegen würde, wie gehe ich am besten weiter vor?

Danke schon mal!
 
Naja...das eine muss ja das andere nicht ausschliessen.
Du kannst ja den Array oder die Variablen auch erzeugen, nachdem du die Daten aus der DB geholt hast...ich sehe da wie gesagt keinerlei Vorteile, wenn du das ganze komplett in einer einzelnen Spalte speicherst.

Die Einstellungen in einer Session aufzubewahren ist recht sinnvoll, ich seh da keine grossen Probleme.

Um nochmal auf die einzelnen Spalten und deren Vorteile einzugehen....mal ausgehend von einem Forum wie dem unseren:
Die Benutzereinstellungen benötigt ja nicht nur der betreffende User, sondern werden auch für "administrative" Zwecke herangezogen.

Angenommen, der Admin will sich alle User mit einer bestimmten Einstellung ansehen oder bei einer Reihe von Usern eine bestimmte Einstellung ändern:
Mit mehreren Spalten reicht da ein simples Query, mit der einzelnen Spalte müssen erstmal die Einstellungen aller User geholt werden, da sie nicht direkt aus der DB heraus gelesen werden können.
Dann müssen die Einstellungen "decodiert" werden, angepasst, wieder codiert und in der DB gespeichert.
Das dauert ewig, PHP ist halt viel langsamer als eine DB alleine.
 
Um nochmal auf die einzelnen Spalten und deren Vorteile einzugehen....mal ausgehend von einem Forum wie dem unseren:
Die Benutzereinstellungen benötigt ja nicht nur der betreffende User, sondern werden auch für "administrative" Zwecke herangezogen.

Angenommen, der Admin will sich alle User mit einer bestimmten Einstellung ansehen oder bei einer Reihe von Usern eine bestimmte Einstellung ändern:
Mit mehreren Spalten reicht da ein simples Query, mit der einzelnen Spalte müssen erstmal die Einstellungen aller User geholt werden, da sie nicht direkt aus der DB heraus gelesen werden können.
Dann müssen die Einstellungen "decodiert" werden, angepasst, wieder codiert und in der DB gespeichert.
Das dauert ewig, PHP ist halt viel langsamer als eine DB alleine.

Danke, soweit hatte ich noch gar nicht gedacht. Ich wollte nur irgendwie vermeiden so viele Session Variablen anzulegen und daher der Gedankengang. Aber dann speichere ich einfach ein Array mit den Werten in einer Session Variable.
 
Zurück