Formulardaten in zwei MySql Tabellen?

  • Themenstarter Themenstarter thier
  • Beginndatum Beginndatum
T

thier

Folgendes Problem:

Ich möchte die Daten aus einem Formular in 2 Tabellen mit jeweils der
gleichen id schreiben.

Habe da diese Tabellen generiert:

1. Tabelle name

ang_id int(2) No auto_increment
name varchar(20) No
vorname varchar(20) No

2. Tabelle ort

ort varchar(20) No
strasse varchar(20) No

Der Code für dioe erste Tabelle sieht so aus:

$eintragen="INSERT INTO name (name,vorname,)
values('$name','$vorname')";

Aber wie sieht der Code für die zweite Tabelle aus, habe da etwas von
mysql_insert_id() und LAST_INSERT_ID() aber nirgendwo ein explizites Beispiel dafür gefunden wie ich dies anstelle.

Ich hoffe mir kann da jemand helfen.

THX

F.Thiel
 
2 Tabellen

Hi, Thier!

Erst mal habe ich eine Frage,
wieso speicherst du die Daten in 2 Tabellen?

Deine Loesung ist:

In der zweiten Tabelle muss ein Feld vorhanden sein,
das die ID aus der ersten Tabelle aufnimmt.

z.B.:

id int(2) No
ort varchar(20) No
strasse varchar(20) No

in diesem Feld speicherst du dann die LAST_INSERT_ID().

Habe leider kein PHP nur zur Hand,
kann dir also nicht den genauen Befehl sagen.
Wuerde aber in der SQL-Referenz und in PHP-Referenz nachschauen.

MfG, Max!
 
:-)))

...ich hab ein zu Hand :-)))

mysql_insert_id()

MIt diesem Befehl kannst Du die auto_increment-ID des letzten Insert-Befehls ermitteln.

ufoman2
 
Reh

mysql_insert_id()

MIt diesem Befehl kannst Du die auto_increment-ID des letzten Insert-Befehls ermitteln.

Vielen Dank soweit war ich allerdings schon. Ich such halt nur noch nach dem espliziten Befehl zum Eintarg in die Datenbank.
Es wäre nett, wenn Du mir folgenden Code kompletztiereb könntest:


$eintragen="INSERT INTO name (name,vorname)
values('$name','$vorname')";

$eintrag="INSERT INTO ort (ort,strasse)
values('$ort','$strasse')";

Müsste ich denn dann auch ein idFeld in die zweite Tabelle schreiben mit auto_increment. Und soll diese Feld dann auch den gleichen Namen besitzen?

THX

F.Thiel
 
So funktioniert es (non-optimized ;-) ):

$eintragen="INSERT INTO name (name,vorname) values('$name','$vorname')";
$result=mysql_query();
$autoid=mysql_insert_id();

$eintrag="INSERT INTO ort (id,ort,strasse) values($autoid,'$ort','$strasse')";
$result=mysql_query();

Zur Erklärung: beim ersten Einfügen ermittelt nach dem mysql_query() der Befehl mysql_insert_id() die auto_increment-ID. Diese muss dann als Referenz in die zweite Tabelle eingetragen werden. Diese darf KEIN auto_increment für die Referenz enthalten, da die IDs durchaus auch auseinanderlaufen können (z.B. Tabelle ORT hat 5 Einträge und NAME hat nur 2, dann stimmt das Vorne und Hinten nicht mehr). Das Feld ID in der zweiten Tabelle ist hier ein numerischer Typ, da dann der Vergleich einfacher ist: z.B. ... WHERE name.id=ort.id;

Ich war mal so frei und habe die mysql_query()-Statements hinzugefügt :-)))

Have phun: think positiv, be negativ

ufoman2
 
Vielen Dank hat nach langer AtbeitsPause dann doch noch funktioniert.

THX

thier
 
Zurück