EKKi: Datenbankstruktur für bevorstehendes Projekt

Beitrag lesen

Mahlzeit hossi,

$bauvorhaben = $_POST["bauvorhaben"];
  $einheit = $_POST["einheit"];
  $handwerker = $_POST["handwerker"];

Wozu dieses überflüssige und fehlerträchtige Umkopieren? Du verschleierst damit nur die Herkunft der Werte. Und da diese Daten auf Benutzereingaben basieren (bzw. Du davon ausgehen *musst*), gilt: "ALL INPUT IS EVIL!" (d.h. Du kannst und *darfst* Dich nicht darauf verlassen, dass diese Werte gültig sind).

mysql_query("INSERT INTO garant
  (bauvorhaben, einheit, handwerker) VALUES
  ('$bauvorhaben', '$einheit', '$handwerker')");

Anschließend verwendest Du diese nicht geprüften Werte sorglos in einer Datenbankabfrage ... das ist in höchstem Maße riskant. Informiere Dich zu den Themen "SQL-Injection" und "Kontextwechsel". Dringend!

Besser wäre:

mysql_query(sprintf("INSERT INTO garant (bauvorhaben, einheit, handwerker) VALUES ('%s', '%s', '%s')", mysql_real_escape_string($_POST['bauvorhaben']), mysql_real_escape_string($_POST['einheit']), mysql_real_escape_string($_POST['handwerker'])));

oder gleich die Verwendung der mysqli*-Funktionen. Informiere Dich dazu in der PHP-Dokumentation Deiner Wahl.

Nun zur Frage:
Als erstes lege ich ein Bauvorhaben an (funktioniert wie oben). Wie stelle ich nun eine Verknpüfung her, wenn ich eine Einheit anlege, dass die ID des Bauvorhabens bei Einheit in die Spalte id_bv geschrieben wird?

Indem Du die ID des gerade angelegten Datensatzes ausliest und in Deiner nächsten Abfrage verwendest. Alternativ könntest Du auch über die Verwendung von "Stored Procedures" nachdenken - dies ist in der Datenbank gespeicherter Programmcode, der z.B. mehrere voneinander abhängige INSERT-Statements in einer Transaktion abarbeitet.

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|