PaSt: mehrere Statments verknüpfen

Beitrag lesen

Hi Leute

Ich möchte eine Bestellung in eine Datenbank oder besser gesagt zwei Tabellen eintragen.
In der einten Tabelle werden die Kundendaten gespeichert und in der anderen die Bestellung.
Verknüpft sollen beide Tabellen über Kunden.ID = Bestellung.Kunden_ID.
Leider komme ich nicht weiter.

ich arbeite mit:

DB mySQL Version 5.0.45.
PHP Version > 5

So sehen die Tabellenlayouts aus

Tabelle Bestellen
ID              int(5) auto_increment
Auftrags_Nr     bigint(15)
Datum           timestamp       CURRENT_TIMESTAMP (on insert)
Kunden_ID       int(5)
Artikel_Nr      varchar(10)     utf8_general_ci
Menge           int(4)

Tabelle Kunden
ID              int(5)  auto_increment
Vorname         varchar(40)     utf8_general_ci
Name            varchar(40)     utf8_general_ci
Adresse         varchar(100)    utf8_general_ci
PLZ_Ort         varchar(100)    utf8_general_ci
eMail           varchar(50)     utf8_general_ci

Ich habe mir folgenden Programm-/Funktions-Ablauf überlegt 1.-4.

  
1\. Prüfen ob bereits Kunde vorhanden ist [ja gehe zu 3. | nein gehe zu 2.]  
-- mMn sollten Vorname, Name, Adresse sowie PLZ_Ort verglichen werden eMail kann ja ändern ohne dass sich die Lieferadresse ändert.  
-- Wie vergleiche ich hier am sinnvollsten? Einfach ein SELECT über die oben angegebenen Spalten?  
  
-- Rückgabe der Kunden.ID (auto_increment)  
  
  
2\. Erzeuge Kunde, sowie Rückgabe der Kunden.ID (auto_increment)  
  
   INSERT INTO  
    Kunden  
   SET  
    Vorname = $Vorname,  
    Name    = $Name,  
    Adresse = $Adresse,  
    PLZ_Ort = $PLZ_Ort,  
    eMail   = $eMail  
  
-- Rückgabe der Kunden.ID (auto_increment)  
-- in php wäre es mysql_insert_id() -> SQL?  
  
  
3\. Bestellung eintragen, sowie Rückgabe der Bestellungen.ID (auto_increment)  
 -- muss evtl mehrmals, also in einer Schleife aufgerufen werden, da in einer Bestellung mehrere Artikel vorkommen können  
  
   INSERT INTO  
    Bestellungen  
   SET  
    Auftrags_Nr= --{Eindeutige ID, am besten YYYYMMDD###, sprich Datum und einer fortlaufenden Zahl falls an diesem Datum bereits eine Bestellung eingegangen sein sollte }  
    Kunden_ID  = Kunden.ID, -- ID des Kunden aus 1. oder 2.  
    Artikel_Nr = $Artikelnummer,  
    Menge      = $Menge  
  
-- Rückgabe der Bestellungen.ID (auto_increment)  
-- in php wäre es mysql_insert_id() -> SQL?  
  
  
4\. Ausgabe der Auftrags_Nr welche in 3. vergeben wurde.  
  
   SELECT  
    Auftrags_Nr  
   FROM  
    Bestellungen  
   WHERE  
    ID = LAST_INSERT_ID()  

Frage:
Soll ich alles in SQL, als 1 Statement (Wie sähe das dan in etwa aus?) oder als 4 einzelne Statements, welche mit PHP aufbereitet werden, abarbeiten?
Wenn mit PHP besteht da nicht die Gefahr, dass es passieren kann, dass wenn zum Beispiel zwei oder mehrere Personen gleichzeitig bestellen es zu einer Vermischung von Kunden-ID und Bestellung kommen könnte?
Oder dass der Kunde schlussendlich eine falsche Auftragsnummer bekommen kann?
Denn nach jedem mysql_query() besteht ja die Möglichkeit, dass ein anderes Query dazwischen funkt, oder ist das falsch?

Wie gehe ich am besten weiter vor oder ist alles Müll?

Bin für alle Tipps dankbar

Ich hoffe ich habe es einigermassen klar formuliert.

gruss