l0g1t3ch
Goto Top

PHP Registration mit 2 Datenbank tabellen

Hallo liebe Gemeinde, ich hoffe ihr könnt mir helfen

Seit zwei guten Tagen hänge ich nun an diesem Registrations Script.

Zur Situation in der Datenbank Tabelle "user" werden "Passwor, Email adresse, Aktiv, Nick und die letzte aktion gespeichert"

CREATE TABLE `user` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`nick` varchar( 50 ) COLLATE latin1_german1_ci NOT NULL ,
`resetkey` varchar( 50 ) COLLATE latin1_german1_ci default NULL ,
`rang` int( 11 ) NOT NULL ,
`email` varchar( 120 ) COLLATE latin1_german1_ci NOT NULL ,
`passwd` varchar( 250 ) COLLATE latin1_german1_ci NOT NULL ,
`activ` varchar( 50 ) COLLATE latin1_german1_ci NOT NULL ,
`last` varchar( 30 ) COLLATE latin1_german1_ci NOT NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `nick` ( `nick` ) 

diese Tabelle soll mit dieser Verknüpft werden

CREATE TABLE `user` (
`id` int( 11 ) NOT NULL AUTO_INCREMENT ,
`uID int( 11 )  NOT NULL ,
`name` varchar( 120 ) COLLATE latin1_german1_ci NOT NULL ,
`vname` varchar( 120 ) COLLATE latin1_german1_ci NOT NULL ,
PRIMARY KEY ( `uID) ,

verbunden werden und bei der Registration soll sofort in beide Tabelle gespeichert werden. Wie verknüpf ich die beiden miteinander das, jenes klappt
bzw ist das überhaupt möglich?

Content-Key: 148269

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

Printed on: April 24, 2024 at 00:04 o'clock

Member: Guenni
Guenni Aug 03, 2010 at 23:47:39 (UTC)
Goto Top
Hi L0g1t3ch,

ich vermute mal, dass du mit PHP/MySQL arbeitest ?

Dann such' mal nach folgenden Begriffen:

- mysql referentielle integrität
- mysql foreign keys constraint

Da gibts 'ne Menge Ergebnisse, die in deine Richtung zielen.


Gruß
Günni
Member: dog
dog Aug 04, 2010 at 01:10:03 (UTC)
Goto Top
In der selben Datenbank sind die Tabellen aber offensichtlich nicht, da es keine doppelten Tabellennamen geben darf?
Member: maretz
maretz Aug 04, 2010 at 05:38:34 (UTC)
Goto Top
und was dann noch fehlt: Wie soll das denn zusammenhängen? EINE Lösung wäre ja z.B. bei der user2-Tabelle (der unteren) das Feld id ohne Auto-Inc zu machen.
Beim Eintragen in die user1-Tabelle gibt dir ja die Sprache (z.B. bei php mittels mysql_fetch_id, bei java indem du das CreateStatement entsprechend anpasst,...) die ID des zuletzt eingetragenen Datensatzes zurück. Diese trägst du dann in deine user2-Tbl. als ID ein. Schon hast du immernoch den Fall das es keine doppelten IDs geben kann (da du auf das Auto-Inc von Tabelle 1 direkt zurückgreiffst) und hast über die ID ne schöne numerische Verbindung geschaffen...
Member: L0g1t3ch
L0g1t3ch Aug 04, 2010 at 08:16:37 (UTC)
Goto Top
doch sind die in der gleichen datenbank aber ich habe oben den code falsch eingefügt. Die eine heißt

user und die andere user_pers

@günni vielen dank hat mir sehr weitergeholfen werde es heute weiter probieren mit den Suchbegriffen
Member: Privateer3000
Privateer3000 Aug 04, 2010 at 13:04:47 (UTC)
Goto Top
Hallo,

eine normalisierungen solltest du schon bedenken.
D.h. wozu die 2. Tabelle wenn doch schon fast alles in der ersten steht?
Sinn würde es haben z.b. eine Rechtetabelle einzurichten oder andere Attribute die
ein User haben könnte.
Für solche Fälle sind, wie Günni richtig bemerkt, die Fremdschlüssel gültig.
In deinem Falle müsste die uID aus Tab2 mit ID aus Tab2 verknüpft werden.
Aber eintragen musst du schon in beide Tabellen per sql statement.
Denn jede Tabelle muss explizit angesprochen werden um Daten einzufügen.
Es gibt zwar noch Erweiterungen in SQL die das können, aber da gehört MySQL nicht dazu.
Member: L0g1t3ch
L0g1t3ch Aug 04, 2010 at 22:42:08 (UTC)
Goto Top
so ich hab das problem behoben können, ich danke euch viele male. Wieder was dazu gelernt.
Member: maretz
maretz Aug 05, 2010 at 05:38:54 (UTC)
Goto Top
gut - und für den zukünftigen Fragesteller der genau dieselbe Frage hat wäre es mehr als freundlich wenn du auch sagst WIE du das Problem behoben hast... Könnte ja sein das irgendwer hier in 500 Jahren nochmal reinsieht und sich freut wenn er die Lösung dann auch findet... (Er/Sie wird sich sicher auch freuen wenn man nur liest das du es gelöst hast -> aber wir sind hier nicht bei den Mathematikern die sich nach 3 Wochen schon nen Ast freuen weil die sagen können "ich weiss das es eine Lösung gibt - nur welche ist noch nicht klar")
Member: L0g1t3ch
L0g1t3ch Aug 05, 2010 at 07:09:56 (UTC)
Goto Top
Ei ei el capitano Lösungsweg werd ich heute abend einstellen wenn ich zuhause bin.
Member: maretz
maretz Aug 06, 2010 at 06:56:00 (UTC)
Goto Top
Na - dein Heimweg is aber zimlich lang... oder du lebst in ner anderen Zeitzone in der der Abend später beginnt? ;)