php mysql datenbank Werte hinzufügen

03/04/2012 15:40 xTrojaner#1
hallo leute,
stehe vor einem problem und zwar ich möchte das user "gruppen" beitreten können und diese dann in der Datenbank gespeichert werden.
Jetzt stehe ich vor dem problem das ich nicht weiß wie ich dies am sinnvolsten umsetze.
Habe mir schon überlegt dem user dafür nur eine Zeile zu geben und alle gruppen in denen man beigreten ist mit komma zu trennen.
Nur bei dieser methode ist das problem das ich nicht weiß wie ich werte immer wieder in der selben Zeile hinzufüge.
....Wenn einmal ein wert geschrieben ist kenne ich nur die methode update um den wert zu ändern, kenne aber keine methode die es mir erlaubt in der selben Zeile, wo schon ein wert gespeichert ist noch einen weiteren hinzuzufügen.
03/04/2012 16:14 PseudoPsycho#2
Bessere Idee:
Jede Gruppe bekommt eine ID (int, auto-fill) und jeder Nutzer auch.
Dann nimmst du 'ne neue Tabelle mit zwei Einträgen:
Nutzer-und Gruppen-ID.
03/04/2012 16:40 xTrojaner#3
ja das ist ne gute idee :)) aber was meinst du mit auto-fill ?
ich hab das jetzt so verstanden das in die tabelle die id des users und die id der gruppe (die zuvor gegründet und und in der datenbank eingespeichert wurde) in eine tabelle geschrieben wird also in 2 Spalten ....
so richtig ?
03/04/2012 17:03 Strean#4
mach es dir doch noch einfacher du machst in deiner db für user gruppe eine spalte und kannst dann auf deiner homepage als beispiel nen button machen join gruppe 1

dann lässt du einach über php die spalte aktualisieren und je nach zahl was in der spalte steht ist der user in der gruppe

oder wenn du willst das man in mehrere gruppen gehen kann machst du für jede gruppe eine spalte und als default wert steht dort eine 0

wenn der user der gruppe gejoinded ist lässt du die jeweilige spalte updaten.
03/04/2012 17:47 xTrojaner#5
Quote:
mach es dir doch noch einfacher du machst in deiner db für user gruppe eine spalte und kannst dann auf deiner homepage als beispiel nen button machen join gruppe 1

dann lässt du einach über php die spalte aktualisieren und je nach zahl was in der spalte steht ist der user in der gruppe

oder wenn du willst das man in mehrere gruppen gehen kann machst du für jede gruppe eine spalte und als default wert steht dort eine 0

wenn der user der gruppe gejoinded ist lässt du die jeweilige spalte updaten.
Das wäre keine schlechte idee nur leider möchte ich das jeder user selbst gruppen gründen kann und sich mit anderen zusammenschließen kann.
Dies läuft über Benutzername oder Passwort der jeweiligen gruppe :)
Das ganze würde dann ziemlich unübersichtlich werden.
03/04/2012 17:56 galaxyo#6
Wieso Problem?

Wenn du die Spalte updaten möchtest, ohne die Daten zu verlieren die bereits in der Spalte stehen, dann liest du die Spalte vorher aus und verkettest diese mit der neuen Gruppe und updatest dann.

Variable1 = Inhalt aus der Datenbank
Variable2 = Die Gruppe der beigetreten wird

Variable1+Variable2 = Update ohne das Daten verloren gehen.

Dürfte das ganze nicht auch mit Insert Into, anstatt von Update funktionieren? Musst du mal ausprobieren.
03/04/2012 21:39 PseudoPsycho#7
Quote:
Originally Posted by xTrojaner View Post
ja das ist ne gute idee :)) aber was meinst du mit auto-fill ?
ich hab das jetzt so verstanden das in die tabelle die id des users und die id der gruppe (die zuvor gegründet und und in der datenbank eingespeichert wurde) in eine tabelle geschrieben wird also in 2 Spalten ....
so richtig ?
Jeder Benutzer erhält eine ID und jede Gruppe auch.
Bei der ID handelt es sich um eine INT(10) mit Auto-Increment.
Wird also Gruppe oder Nutzer hinzugefügt, wird das Feld automatisch ausgefüllt...
Eine dritte Tabelle hat die zwei Spalten "gruppe" und "nutzer", in welchen die jeweiligen ID's gespeichert werden.
Auf die Art hat man dann auch kein Problem, wenn ein Nutzer die Gruppe wieder verlassen soll.
03/05/2012 08:19 Mashkin#8
So wie PseudoPsycho es beschrieben hat machen es viele Forum-Scripts (z.B. WBB3) und CMS.

Ich versuche das mal zu veranschaulichen:

Tabelle "user":
iduserpassword
4356blabla1IRGENDEINHASH
4357zweiteraccoutPASSWORTHASH
Tabelle "groups":
idgrouppassword
342GruppeLOLIRGENDEINHASH
343WTFTeamPASSWORTHASH
Tabelle "user_to_groups":
user_idgroup_id
4356342
4357342
4357343
Hier ist jetzt "blabla1" in der Gruppe "GruppeLOL" und "zweiteraccount" ist in den Gruppen "GruppeLOL" und "WTFTeam".

Die IDs sind zufällig gewählt und sollten später per "Auto-Increment" beim hinzufügen eines Eintrags automatisch gesetzt werden.

Jede Gruppenzugehörigkeit kann also allein durch Zugriff auf "user_to_groups" geändert/hinzugefügt/gelöscht werden ohne die Gruppen oder User direkt zu beeinflussen.

Natürlich könnte in "user_to_groups" auch noch eine Rechtestufe (z.B. "is_admin") als zusätzliches Feld gespeichert werden. Wie komplex das am Ende wird liegt an deinen Anforderungen.

Wenn du dich generell mit solchen Datenmodellen und -verknüpfungen befassen willst, schaust du dir am besten mal ein Beispiel an. Etwa die Forensoftware "WBB" oder "WBBLite" bietet einen guten und praxisnahen Einblick in die User- und Gruppenverwaltung.