Hallo,
ich setzte für unsere Firma den Online-Shop "OsCommerce" ein und alles läuft super.
Der Kunde und wir erhalten eine Bestellbestätigung.
Aus verschiedenen Gründen habe ich ein PHP-Script so modifiziert, das die Bestellungen in einem selbstdefinierten Format bei uns eingehen.
Wenn ich dieses Script aufrufe, werden nur die neuen Bestellungen uns per E-Mail in diesem gewünschten Format zugesendet.
So weit, so gut!
Jetzt zum eigentlichen Problem:
Das ausgegebene E-Mail enthält lediglich Daten aus der MySQL-Tabelle "orders".
Wie genau erreiche ich es, zusätzlich Daten aus einer anderen Tabelle "customers" in das Bestell-EMail einzufügen?
--> Wenn möglich, mir die entsprechenden Änderungen genau anzeigen (möglichst im Quellcode), oder die entsprechende Ergänzung neu posten
Anhand des Musters in dem Script, bekomme ich das nicht auf die Reihe...
Es gibt dann nur noch Fehlermeldungen.
Das Script liegt bei, sowie das vom Script ausgeworfenen Bestell-EMail.
Ich wäre sehr, sehr dankbar, wenn mir da jemand unter die Arme helfen könnte,
da ich kein PHP oder MySQL Experte bin.
---------------------
Ausgeworfenen Bestell-EMail:
Bestellnummer: 1234
-----------------> Rechnungsanschrift <---------------
Rg Name : Max Mustermann
Rg Firma :
Rg Strasse : Musterstr. 5
Rg Plz-Ort : 12345 Musterhausen
Rg Land : Deutschland
Rg Telefon : 01234/56789
Rg E-Mail : muster@domain.de
-----------------> Lieferunganschrift <---------------
Liefer Name : Max Mustermann
Liefer Firma :
Liefer Strasse : Musterstr. 5
Liefer Plz-Ort : 12345 Musterhausen
Liefer Land : Deutschland
---------------------------------------
Position1 : 1 x 999-9 (Musterartikel)
Ende der Bestellung!
ich setzte für unsere Firma den Online-Shop "OsCommerce" ein und alles läuft super.
Der Kunde und wir erhalten eine Bestellbestätigung.
Aus verschiedenen Gründen habe ich ein PHP-Script so modifiziert, das die Bestellungen in einem selbstdefinierten Format bei uns eingehen.
Wenn ich dieses Script aufrufe, werden nur die neuen Bestellungen uns per E-Mail in diesem gewünschten Format zugesendet.
So weit, so gut!
Jetzt zum eigentlichen Problem:
Das ausgegebene E-Mail enthält lediglich Daten aus der MySQL-Tabelle "orders".
Wie genau erreiche ich es, zusätzlich Daten aus einer anderen Tabelle "customers" in das Bestell-EMail einzufügen?
--> Wenn möglich, mir die entsprechenden Änderungen genau anzeigen (möglichst im Quellcode), oder die entsprechende Ergänzung neu posten
Anhand des Musters in dem Script, bekomme ich das nicht auf die Reihe...
Es gibt dann nur noch Fehlermeldungen.
Das Script liegt bei, sowie das vom Script ausgeworfenen Bestell-EMail.
Ich wäre sehr, sehr dankbar, wenn mir da jemand unter die Arme helfen könnte,
da ich kein PHP oder MySQL Experte bin.
---------------------
PHP-Code:
<?php
define(MAILTO, "x@domain.de");
define(STATUS_FILE, "/domain.de/order.status");
define(SQL_SERVER, "mysql.domain.de");
define(SQL_DATABASE, "xyz");
define(SQL_UID, "xyz");
define(SQL_PASSWORD, "xyz");
// Initiate DB connection
function db_init() {
global $db_conn;
if (!$db_conn=mysql_connect(SQL_SERVER, SQL_UID, SQL_PASSWORD)) {
print("MySQL error: cannot connect to server: ".mysql_errno().": ".mysql_error()."<br>\n");
return(-1);
}
if (!mysql_select_db(SQL_DATABASE, $db_conn)) {
print("MySQL error: cannot select db: ".mysql_errno().": ".mysql_error()."<br>\n");
return(-1);
}
return($db_conn);
}
// Close DB connection
function db_end() {
global $db_conn;
if (! $db_conn) return(0);
return(mysql_close($db_conn));
}
function fail($msg) {
print $msg."\n";
if (mysql_errno())
print "MySQL error: [".mysql_errno()."] ".mysql_error()."<br>\n";
}
if (! $fp = fopen(STATUS_FILE, "r")) {
print "Fehler: Datei /root/order.status existiert nicht. Die Datei muss vorhanden sein und sollte eine `0' enthalten, falls dies der Erste Programmstart ist.";
exit;
}
$lastid = trim(fgets($fp, 4096));
fclose($fp);
if ((! $lastid) and ($lastid != "0")) {
print "Fehler: Datei /root/order.status muss die letzt gelesene orders_id enthalten.";
exit;
}
if (db_init() == -1)
fail("Datenbank-Fehler: Es konnte keine Verbindung zur Datenbank hergestellt werden.");
elseif (! $orders = mysql_query("select * from `orders` where `orders_id` > '".mysql_escape_string($lastid)."'"))
fail("Datenbank-Fehler: Die Datenbank konnte nicht abgefragt werden.");
elseif (mysql_numrows($orders) == 0)
fail("Meldung: Keine neuen Bestellungen!");
else {
while ($row = mysql_fetch_object($orders)) {
$pos = strrpos($row->customers_name, " ");
if ($pos == -1) {
$vorname = "";
$nachname = $row->customers_name;
}
else {
$vorname = substr($row->customers_name, 0, $pos);
$nachname = substr($row->customers_name, $pos);
}
$delivery = "";
if ($row->delivery_company)
$delivery .= $row->delivery_company.", ";
$delivery .= $row->delivery_name;
$delivery .= ", ".$row->delivery_street_address;
$delivery .= ", ".$row->delivery_postcode;
$delivery .= ", ".$row->delivery_city;
if ($row->delivery_country != "Germany")
$delivery .= ", ".$row->delivery_country;
$shipping = 0;
if (! $foo = mysql_query("select `value` from `orders_total` where `orders_id` = '".mysql_escape_string($row->orders_id)."' and `class` = 'ot_shipping'"))
fail("Meldung: Order Nr. $row->orders_id ist gesendet!");
elseif (mysql_numrows($foo) == 0)
fail(" - Bestellung $row->orders_id ist verarbeitet");
else {
$bar = mysql_fetch_object($foo);
$shipping = $bar->value;;
}
$cod_fee = 0;
if (! $foo = mysql_query("select `value` from `orders_total` where `orders_id` = '".mysql_escape_string($row->orders_id)."' and `class` = 'ot_cod_fee'"))
fail("Datenbank-Fehler: Nachnahmegebühr für Order Nr. $row->orders_id kann nicht ausgelesen werden.");
elseif (mysql_numrows($foo) == 0)
$cod_fee = 0;
else {
$bar = mysql_fetch_object($foo);
$cod_fee = $bar->value;;
}
$loworderfee = 0;
if (! $foo = mysql_query("select `value` from `orders_total` where `orders_id` = '".mysql_escape_string($row->orders_id)."' and `class` = 'ot_loworderfee'"))
fail("Datenbank-Fehler: Mindermengenaufschlag für Order Nr. $row->orders_id kann nicht ausgelesen werden.");
elseif (mysql_numrows($foo) == 0)
$loworderfee = 0;
else {
$bar = mysql_fetch_object($foo);
$loworderfee = $bar->value;;
}
$BANKINHABER = "";
$BANK = "";
$BLZ = "";
$KONTONR = "";
if ($row->payment_method == "Lastschriftverfahren") {
if (! $payment = mysql_query("select * from `banktransfer` where `orders_id` = '".mysql_escape_string($row->orders_id)."'"))
fail("Datenbank-Fehler: Banktransfer für Order Nr. $row->orders_id kann nicht gelesen werden.");
elseif (mysql_numrows($payment) == 0)
fail("Datenbank-Fehler: Banktransfer für Order Nr. $row->orders_id ist leer.");
else {
$banktransfer = mysql_fetch_object($payment);
$BANKINHABER = $banktransfer->banktransfer_owner;
$BANK = $banktransfer->banktransfer_bankname;
$BLZ = $banktransfer->banktransfer_blz;
$KONTONR = $banktransfer->banktransfer_number;
}
}
$msg = "";
$msg .= "Bestellnummer: $row->orders_id\n";
$msg .= "-----------------> Rechnungsanschrift <---------------\n";
$msg .= "Rg Name : $row->customers_name\n";
$msg .= "Rg Firma : $row->customers_company\n";
$msg .= "Rg Strasse : $row->customers_street_address\n";
$msg .= "Rg Plz-Ort : $row->customers_postcode $row->customers_city\n";
$msg .= "Rg Land : ".($row->customers_country == "Germany" ? "DE" : $row->customers_country)."\n";
$msg .= "Rg Telefon : $row->customers_telephone\n";
$msg .= "Rg E-Mail : $row->customers_email_address\n";
$msg .= "-----------------> Lieferunganschrift <---------------\n";
$msg .= "Liefer Name : $row->delivery_name\n";
$msg .= "Liefer Firma : $row->delivery_company\n";
$msg .= "Liefer Strasse : $row->delivery_street_address\n";
$msg .= "Liefer Plz-Ort : $row->delivery_postcode $row->delivery_city\n";
$msg .= "Liefer Land : ".($row->customers_country == "Germany" ? "DE" : $row->delivery_country)."\n";
$msg .= "---------------------------------------\n";
if (! $products = mysql_query("select * from `orders_products` where `orders_id` = '".mysql_escape_string($row->orders_id)."'"))
fail("Datenbank-Fehler: Artikelliste für Order Nr. $row->orders_id kann nicht gelesen werden.");
elseif (mysql_numrows($products) == 0)
fail("Datenbank-Fehler: Artikelliste für Order Nr. $row->orders_id ist leer.");
else {
$zaehler = 1;
while ($product = mysql_fetch_object($products)) {
$epreis = preg_replace("/\,$/", ",00", preg_replace("/0+$/", "", preg_replace("/\./", ",", $product->products_price)));
$gpreis = preg_replace("/\,$/", ",00", preg_replace("/0+$/", "", preg_replace("/\./", ",", $product->final_price)));
$msg .= "Position$zaehler : $product->products_quantity x $product->products_model ($product->products_name)\n";
$zaehler++;
}
$msg .= "\n";
$msg .= "Ende der Bestellung!\n";
}
if (! mail(MAILTO, "Bestellung Nr. $row->orders_id", $msg)) {
fail("Fehler: E-Mail kann nicht versendet werden.");
exit;
}
if (! $fp = fopen(STATUS_FILE, "w")) {
print "Fehler: Datei /root/order.status kann nicht geschrieben werden.";
exit;
}
fwrite($fp, $row->orders_id."\n");
fclose($fp);
}
}
?>
Bestellnummer: 1234
-----------------> Rechnungsanschrift <---------------
Rg Name : Max Mustermann
Rg Firma :
Rg Strasse : Musterstr. 5
Rg Plz-Ort : 12345 Musterhausen
Rg Land : Deutschland
Rg Telefon : 01234/56789
Rg E-Mail : muster@domain.de
-----------------> Lieferunganschrift <---------------
Liefer Name : Max Mustermann
Liefer Firma :
Liefer Strasse : Musterstr. 5
Liefer Plz-Ort : 12345 Musterhausen
Liefer Land : Deutschland
---------------------------------------
Position1 : 1 x 999-9 (Musterartikel)
Ende der Bestellung!
Kommentar