php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.10.2006, 23:38  
Gast
 
Beiträge: n/a
Standard Dynamisches Userprofil auf OOP-Basis

Hallo! Hab in meinem GMX-Postfach nochmal geguckt, wie nun die neue Adresse dieses Forums ist, war ja Ewigkeiten nicht mehr hier!

Ich bin gerade dabei, ein CMS zu programmieren und wollte beim Usermodul ein dynamisches Benutzerprofil erstellen. Mit dynamisch meine ich, dass beliebig viele Profilfelder (z.B. ICQ, Herkunft, ...) hinzugefügt und gelöscht werden können. Außerdem soll jedem Feld eine Überkategorie zugeordnet werden.

Ich habe mich jetzt schon hingesetz und mir verschiedene Datenbankkonstruktionen durch den Kopf gehen lassen, die zündende Idee war aber noch nicht dabei.

Ein einfaches Feld mit ALTER hinzuzufügen bringt wenig, da bei der Angabe ja noch Name des Feldes und die Übergruppe fehlen würden.
Eine extra Tabelle "user_fields" mit einer Feld-Id, einem Feld-Namen und einer Kategorie-Id bringt auch nicht viel. Zumindest habe ich kein Weg gefunden, diese Tabelle irgendwie in der User-Tabelle unterzubringen.

Könnt ihr mir sagen, wie ich die Datenbank aufbauen sollte? Wäre für jede Hilfe dankbar! Danke schonmal im Voraus!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.10.2006, 08:39  
Erfahrener Benutzer
 
Registriert seit: 12.07.2004
Beiträge: 219
d-jango zeigte ein beschämendes Verhalten in der Vergangenheit
d-jango eine Nachricht über ICQ schicken
Standard

hmm... ich hab da eine Idee...

hier mal mein Vorschlag zum Datenbank-Entwurf

__________________
http://www.fun2stay.de
d-jango ist offline  
Alt 30.10.2006, 09:07  
Erfahrener Benutzer
 
Registriert seit: 03.11.2004
Beiträge: 289
rbs_phoenix
rbs_phoenix eine Nachricht über ICQ schicken
Standard

vielleicht könnte man ein Feld "Selfinfo" machen und dort ein array speichern.. also trennzeichen ":" und ";" oder sowas.... dann ließt du das Feld aus und machst ein Array draus. Also so würde ich es machen. Oder ich hab das nicht verstanden

MFG RBS_Phoenix

edit: Oder du machst wie hiervor eine Tabelle mit 3 Feldern. "userID", "infoname" und "infovalue". Dann machste pro einzelne zusätzliche Info ein eintrag mit userid, infoname (z.b. "ICQ-Nummer") und infovalue (z.b. "123456789"). Wäre vlt einfacher.
__________________
Homepage: http://www.rbs-page.de
rbs_phoenix ist offline  
Alt 30.10.2006, 12:53  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wenn die Informations-Anzahl unbekannt ist und größer 1 werden könnte, sollte man die Informationen Datensatz-weise (also zeilenweise) speichern.

d-jango hat es schon als Diagramm vorgeschlagen. 2 Hinweise dazu: eine profileid ist nicht nötig, da sich ein Datensatz eindeutig durch die Kombination userid/itemid identifiziert. Ein weiterer Primärschlüssel ist Balast.

Zweiter Hinweis: Deine Performance sinkt, bei vielen Usern wahrscheinlich sogar merklich.
Pro Profilabfrage erhöht sich dein Aufwand von einer Abfrage auf zwei, wobei die zweite eine Ergebnismenge ist. Mag vielleicht bei kleinen bis mittleren Projekten akzeptabel sein. Aber es bleibt bei mindestens einer Verdopplung des Aufwandes.

Vielleicht kannst du ja einen Kompromiss fahren und die Standard-Eigenschaften eines Users (Name, Anrede, Geschlecht, E-Mail, Passwort, Alter) trotzdem in der Haupttabelle zusammenfassen.

Bei meinem letzten Projekt bin ich übrigens die selbe Schiene gefahren, hier war Performance in diesem Maß nicht relevant.

Wenn ich mir aber studivz.net angucke, die brauchen dringend mal Performance-Optimierungen, aber ich glaub da scheiterts schon an der Hardware.
Zergling-new ist offline  
Alt 30.10.2006, 14:45  
Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 70
shocky
shocky eine Nachricht über ICQ schicken
Standard

Ma ne frage wenn er standartsachen schon mit reinnimmt muss er dann nicht trotzdem nachsehen ob was von den Dynamischen da ist also hätte er doch wieder zwei Abfragen oder??
shocky ist offline  
Alt 30.10.2006, 14:57  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Doch, aber die werden vielleicht nur auf der Profil-Seite benötigt. Wenn ich die News anzeige und den User begrüßen möchte, brauche ich vielleicht ein "Hallo VORNAME NACHNAME" aber nicht noch die ICQ-Nummer und die Hobbys.

Da das System die Informationen logisch erstmal nicht einordnen kann (denn die Spalten sind variabel), macht es eigentlich nur bei der Profil-Ansicht Sinn, diese zu laden.
Zergling-new ist offline  
Alt 30.10.2006, 15:52  
Gast
 
Beiträge: n/a
Standard

Danke erstmal für eure Tipps.
Sehe ich das also richtig? Das ist wieder so ein Fall, wo es die Lösung nicht gibt?
Naja, das CMS sollte schon auch für größere Zwecke eingesetz werden, ansonsten würde ich dennoch zu der Methode von d-jango tendieren. Danke für eure Hilfe.
 
Alt 30.10.2006, 22:34  
Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 70
shocky
shocky eine Nachricht über ICQ schicken
Standard

hä warum denn den lösungsweg find ich eigentlich recht gut
Ist doch ein guter weg wenn solche sachen nur beim profil angezeigt werden dann ist doch dieses Tabellendesign ideal!
Also ich hatte sowas ähnliches mal gehabt da konnten die user fotos von sich hochladen und es konnte eine variable anzahl von fotos sein da habe ich das auch soo gelöst.
Und die Fotos wurden auch nur beim userprofil oder in meinem Fall unter Userpics angezeigt
shocky ist offline  
Alt 30.10.2006, 23:00  
Gast
 
Beiträge: n/a
Standard

Ja, ich werde es jetzt auch so machen.
Wie bekomme ich denn die Felder am besten ausgelesen, sodass sie auch immer in der gleichen Reihenfolge angezeigt werden?
 
Alt 30.10.2006, 23:23  
Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 70
shocky
shocky eine Nachricht über ICQ schicken
Standard

noch eine andeutung von mir
Könnte man nicht die Tabelle user_profile weglassen ?
so hatte ich das bei meinen bildern gemacht!
Dann nimt man in die Tabelle profile_items noch die userId mit rein. und setzt alle drei felder als primärschlüssel.
shocky ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Userprofil nach Kategorien und Feldern ordnen Matze PHP Tipps 2007 14 16.01.2007 14:42
[Erledigt] Dynamisches Dropdown HTML, Usability und Barrierefreiheit 3 06.03.2006 13:12
[Erledigt] dynamisches dropdown menü PHP Tipps 2006 3 11.01.2006 15:15
[Erledigt] dynamisches Pulldown HTML, Usability und Barrierefreiheit 2 19.10.2005 09:06
Php Forum auf PHP 5 Basis Beitragsarchiv 4 18.10.2005 20:24
dynamisches Pulldown PHP Tipps 2005-2 1 18.10.2005 13:02
dynamisches Pulldown PHP Tipps 2005-2 13 12.10.2005 15:42
Dynamisches Menü mit Icons(!) zur Navigation Beitragsarchiv 9 20.04.2005 18:44
Dynamisches Menü mit Icons PHP Tipps 2005 2 18.04.2005 16:03
Dynamisches Menu PHP Tipps 2005 11 22.03.2005 20:36
[Erledigt] Dynamisches Menü erweitern?? PHP Tipps 2005 1 19.03.2005 14:41
Dynamisches Menue PHP Tipps 2005 1 07.03.2005 10:31
Dynamisches Menü mit untermenü PHP Tipps 2005 3 03.02.2005 18:52
Vertriebs - System auf PHP / MySql Basis dh1sbg Beitragsarchiv 4 18.11.2004 10:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
dynamische oop benutzerabfra phpge, oop dynamisch php, userprofil anzeigen lassen php, dynamische userprofil php, dynamische userprofil, userprofil aufbauen html, über icq nummer informationen, cms mit userprofilen, php userprofil, php oop benutzerprofil, einfaches userprofil mit php, cms userprofile anzeigen lassen, userprofil php datenbank, dynamische profilfelder php

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:25 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.