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-ID: 148269

Url: https://administrator.de/forum/php-registration-mit-2-datenbank-tabellen-148269.html

Ausgedruckt am: 22.12.2024 um 17:12 Uhr

Guenni
Guenni 04.08.2010 um 01:47:39 Uhr
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
dog
dog 04.08.2010 um 03:10:03 Uhr
Goto Top
In der selben Datenbank sind die Tabellen aber offensichtlich nicht, da es keine doppelten Tabellennamen geben darf?
maretz
maretz 04.08.2010 um 07:38:34 Uhr
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...
L0g1t3ch
L0g1t3ch 04.08.2010 um 10:16:37 Uhr
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
Privateer3000
Privateer3000 04.08.2010 um 15:04:47 Uhr
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.
L0g1t3ch
L0g1t3ch 05.08.2010 um 00:42:08 Uhr
Goto Top
so ich hab das problem behoben können, ich danke euch viele male. Wieder was dazu gelernt.
maretz
maretz 05.08.2010 um 07:38:54 Uhr
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")
L0g1t3ch
L0g1t3ch 05.08.2010 um 09:09:56 Uhr
Goto Top
Ei ei el capitano Lösungsweg werd ich heute abend einstellen wenn ich zuhause bin.
maretz
maretz 06.08.2010 um 08:56:00 Uhr
Goto Top
Na - dein Heimweg is aber zimlich lang... oder du lebst in ner anderen Zeitzone in der der Abend später beginnt? ;)