Daten aus Formular holen, und zwei Tabellen verbinden.

messmar

Erfahrenes Mitglied
Hi,

ich habe zwei Tabellen: "ort" und "kunde"

ort: ist die Master-Tabelle mit folgenden feldern:
ort_ID (PK), strasse, Haussnr, ort, plz.

Diese Felder werden mit dem Befehl "INSERT" über ein Formular, das der User ausfüllt, geholt.
$datenEintragen = "INSERT INTO ort (strasse, haussnr, ort, plz) VALUES ('$strasse', '$haussnr', '$ort', '$plz')";
$tueEsMal = mysql_query($datenEintragen, $db);

kunde: ist die zweite Tabelle mit folgenden Feldern:
kunden_ID (PK), ort_ID (FK), anrede, name, email.

Die Felder: anrede, name, email, in der Tabelle: kunde, werden mit dem Befehl "INSERT" über ein Formular, das der User ausfüllt, geholt.

$datenEintragen = "INSERT INTO kunde (anrede, name, email) VALUES ('$FoM','$name','$email')";
$tueEsMal = mysql_query($datenEintragen, $db);

Bisherher funktioniert alles prima ;-)


Das Feld ort_ID (FK) in der Tabelle: kunde, muss aus der Tabelle ort kommen, da es als FK zu einer 1:n Beziehung dient:
$datenSatz = "INSERT INTO kunde (ort_ID) SELECT ort_ID FROM ort WHERE ort_ID!=' ' ";
$datenSatzEin = mysql_query($datenSatz, $db);


Dann will ich die Tabelle: kunde anzeigen lassen bzw. verwenden, sowohl in die Datenbank als auch im Browser. mit:

$datenHolen = "SELECT kunde.kunden_ID, ort.ort_ID, kunde.anrede, kunde.name, kunde.email FROM kunde, ort WHERE (kunde.kunden_ID!=' ' AND ort.ort_ID!=' ' AND kunde.anrede!=' ' AND kunde.name!=' ' AND kunde.email!=' ')";

oder mit:

$datenHolen = "SELECT * FROM kunde";
$tueEs = mysql_query($datenHolen, $db);

Es funktioniert überhaupt nicht.

Jedes Mal bekomme ich ein neues Problem. entwerde die Datensätze werden dreifach o. vierfach doppelt geschrieben oder das Feld ort_ID wird mit "0" belegt.

Ich bin für jede Hilfe dankbar.

Gruß

Amin
 
Ich kenn mich zwar mit mysql nicht aus aber ich bin seit 22 tagen dabei mich in sql und pl/sql einzuarbeiten. Bei Sql müsstest du es so machen:

select a.kunde.kunden_id, b.ort.ort_id, a.kunde.anrede, a.kunde.name, a.kunde.email
from kunde a, ort b
where... and
a.ort_id = b.ort_id

also könnte es sein dass du das auch so machen musst

$datenHolen = "SELECT a.kunde.kunden_ID, b.ort.ort_ID, a.kunde.anrede, a.kunde.name, a.kunde.email FROM a.kunde, b.ort WHERE (a.kunde.kunden_ID!=' ' AND b.ort.ort_ID!=' ' AND a.kunde.anrede!=' ' AND a.kunde.name!=' ' AND a.kunde.email!=' ')";

keine ahnung ob das mit mysql auch so funktioniert aber du hast ja geschrieben, dass du für jede hilfe dankbar bist :D
 
Also jeder Insert Befehl legt einen neuen Datensatz an

1. Insert deine Formulardaten
2. Insert dein Versuch die ID zu speichern

Ergebnis 2 Datensätze

so geht es richtig

1. Insert dein Ort

dann $ortid = mysql_insert_id();

ermittelt die Id vom neuen Datensatz - Vorraussetzung ist das es ein autoincrement feld ist.

2. Insert dein Kunden Daten mit der ermittelten ID :-)
 
Hi,

danke dir melmager, das war die Lösung.

Die "ort_ID" über die Funktion: "mysql_insert_id()" in einer Variable zu holen, und sie dann mit "Insert" für die Tabelle "kunde" auszugeben.


:-)
 
Zurück