Frage Bestellungen in DB eintragen

thommy1972

Mitglied
Hallo
Habe nun soweit meinen Shop begehbar bekommen leider hänge ich nun an dem letzten und wichtigsten Schritt. Der eigentlichen bestellung.
Alle daten werden ja per WHILE in der Bestellübersicht angezeigt:
PHP:
while($row = mysql_fetch_array($ausgabe))
  {
$gesamtpreis = $row[stpreis] * $row[menge];
$total = $total + $gesamtpreis;
echo "<tr><td>";
echo $row[menge];
echo " St.</td>";
echo "<td>";
echo $row[titel];
echo "</td>";
echo "<td>";
echo $row[stpreis];
echo " &euro;</td>";
echo "<td>";
echo number_format($gesamtpreis,2,",",".");
echo " &euro;</td>";
echo "</tr>";
  }
  echo "</table><br>";
  echo "Bestellwert: <b>";
  echo number_format($total,2);
  echo " &euro;</b>";

Diese werden dann an eine weitere Seite gesandt um u.a. per Mail an Kunde und Inhaber verschickt zu werden
PHP:
 $to = "emailadresse@keinname.it";
 $subject = "Bestellung !";
 $body = "Es gabe eine Bestellung von: $anrede $nachname
 \n Folgende Datenwurden angegeben:\n
Anrede:\t ".$anrede."\n
Vorname:\t ".$vorname."\n
Nachname:\t ".$nachname."\n
Strasse:\t ".$strasse."\n
Hausnummer:\t ".$hsnr."\n
PLZ:\t\t ".$plz."\n
Wohnort:\t ".$ort."\n
Telefon:\t ".$telefon."\n\n
Bankverbindung:\n
Konto-Nr:\t ".$konto."\n
BLZ:\t\t ".$blz."\n
Bank:\t\t ".$bank."\n
\n
Bestellung per:\t ".$versandart."\n
 ";
 if (mail($to, $subject, $body)) {
   echo("<p>Bestellung erfolgreich versandt !</p>");
  } else {
   echo("<p>Es trat ein Fehler auf...</p>");
  }

Soweit so gut. Nun müssen aber alle diese Daten in eine Tabelle "Bestellung". Wie ich die Adressdaten reinbekomme weiss ich aber die Artikel da hängts da diese ja per WHILE Schleife abgerufen werden...

Hat da wer nen kleinen Denkanstoss für mich ?
 
Leider doch noch ein Problemchen...
Ich müsste aus 2 Tabellen Daten in eine Tabelle kopieren.
Dazu versuche ich mit:
PHP:
mysql_query("SELECT * FROM warenkorb where ip = '$ip'");
mysql_query("INSERT INTO bestellung (`ip`, `titel`, `artnr`, `menge`, `stpreis`) VALUES (`$ip', '$titel', '$artnr', '$menge', '$stpreis')");
die Daten aus der Bestellung (Artikel)
und den Kundendaten:
PHP:
$eintrag = "INSERT INTO `bestellung` (
`anrede` ,
`vorname` , 
`nachname`,
`strasse` ,
`hsnr` ,
`plz` ,
`ort` ,
`telefon` ,
`mobil` ,
`internet` ,
`email` ,
`konto` ,
`blz` ,
`inhaber` ,
`versandart` ,
`liefervorname` ,
`liefernachname` ,
`lieferstrasse` ,
`lieferhsnr` ,
`lieferplz` ,
`lieferort` ,
`bemerkungen`
) VALUE ('$anrede', '$vorname', '$nachname', '$strasse', '$hsnr',  '$plz', '$ort', '$telefon', '$mobil', '$internet', '$email', '$konto', '$blz', '$inhaber', '$versandart', '$liefervorname', '$liefernachname', '$lieferstrasse', '$lieferhsnr', '$lieferplz', '$lieferort', '$bemerkungen');";

mysql_query($eintrag) OR DIE ("<center><strong>Kunde oder Email-Adresse schon vorhanden !</center></strong>");
einzutragen.

Letzteres funktioniert wunderbar allerdings holt er mir die Daten aus den Bestellten Artikeln nicht in die Tabelle bestellung. Beide Daten sollen aber in die Tabelle bestellung
 
Du verwendest INSERT..INTO...VALUES

Mach dich mal schlau über INSERT...INTO....SELECT
Damit musst du nicht erst alle auslesen und dann einzeln wieder abfüllen. Im SELECT-Teil kannst du ein ganz normales JOIN verwenden
 
Also ich habe mal etwas rumgegooglet und folgenden code eingebastelt:
PHP:
mysql_query = ("INSERT INTO `bestellung` (`titel`, `artnr`, `menge`, `stpreis`)
SELECT (titel, artnr, menge, stpreis) FROM `warenkorb` WHERE ip = '$ip'");

Nur gehts damit auch nicht...
Aber der Code sollte ja ziemlich der richtige Ansatz sein ?

Kann es sein daß er wegen der Anzahl der spalten die ja in "bestellung" mehr sind als in warenkorb rumzickt ?
 
Zuletzt bearbeitet:
Ja, darum gubts Fehlermeldungen.

Sobald ich herausgefunden habe, was du eigentlich willst, kann ich ev. auch weiterhelfen
 
Habs jetzt raus ^^ Wenn auch bestimmt total schwachsinniger Code aber hier mal mein Ergebnis:

PHP:
$ip = $_SERVER['REMOTE_ADDR'];
$eintrag1 = ("INSERT INTO `bestellung` (
`id` ,
`ip` ,
`titel` ,
`artnr` ,
`menge` ,
`stpreis`
)
SELECT * FROM warenkorb where ip = '$ip'");
mysql_query($eintrag1);
Fügt id, ip, titel, artnr, menge und preis in "Bestellung" ein danach:

PHP:
$eintrag = "UPDATE `bestellung` SET
`anrede` = '$anrede',
`vorname` = '$vorname',
`nachname` = '$nachname',
`strasse` = '$strasse',
`hsnr` = '$hsnr',
`plz` = '$plz',
`ort` = '$ort',
`telefon` = '$telefon',
`mobil` = '$mobil',
`internet` = '$internet',
`email` = '$email',
`konto` = '$konto',
`blz` = '$blz',
`inhaber` = '$inhaber',
`versandart` = '$versandart',
`liefervorname` = '$liefervorname',
`liefernachname` = '$liefernachname',
`lieferstrasse` = '$lieferstrasse',
`lieferhsnr` = '$lieferhsnr',
`lieferplz` = '$lieferplz',
`lieferort` = '$lieferort',
`bemerkungen` = '$bemerkungen'
WHERE ip = '$ip'";

mysql_query($eintrag) OR DIE ("<center><strong>Kunde oder Email-Adresse schon vorhanden !</center></strong>");
Werden dei Kundendaten in die Zeile per UPDATE eingebracht.
Das ganze ändert die Zeile in der die IP dem der IP des Kunden entspricht.
 
Zurück