SQL & PHP Experten - benötige Hilfe!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL & PHP Experten - benötige Hilfe!

    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.

    ---------------------


    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_SERVERSQL_UIDSQL_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($fp4096));
    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_name0$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);
        }
    }

    ?>
    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!
    Zuletzt geändert von platin-mail; 23.03.2004, 12:11.

  • #2
    if ($row->payment_method == "Lastschriftverfahren") {
    if (! $test = mysql_query("select * from `DEINE_TABELLE` 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($test) == 0)
    fail("Datenbank-Fehler: Banktransfer für Order Nr. $row->orders_id ist leer.");
    else {
    $costumer = mysql_fetch_object($test);
    $BANKINHABER = $costumer>DEINE_SPALTE;
    $BANK = $costumer->DEINE_SPALTE;

    USW USW
    }
    }

    Gruß
    Arni
    Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban

    Kommentar


    • #3
      Es funzt nit...

      Hi Arni,
      erstmal Danke für Deine Hilfe!!

      Aber leider funktioniert es nicht.
      Was mache ich falsch??

      Hier noch mal mein geänderter Code:


      PHP-Code:
              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;
                  }
              }
              if (
      $row->payment_method == "Lastschriftverfahren") {
                  if (! 
      $user mysql_query("select * from `customers` 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($user) == 0)
                      
      fail("Datenbank-Fehler: Banktransfer für Order Nr. $row->orders_id ist leer.");
                  else {
                      
      $users mysql_fetch_object($user);
                      
      $gdate $users->customers_dob;
                  }
              }

              
      $msg "";
              
      $msg .= "Bestellnummer: $row->orders_id\n";
              
      $msg .= "GDatum: $row->customers_dob\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"
      Zuletzt geändert von platin-mail; 25.03.2004, 13:03.

      Kommentar


      • #4
        Schnipp...

        Kann mir den keiner helfen?
        Bitte seid doch so nett...

        Schnapp...

        Kommentar


        • #5
          zu viel Codes, das schreckt ab, die meisten (mich eingeschlossen) sind
          etwas faul zu lesen, daher bitte nur den relevanten Teil posten.

          Also hab' nur kurz drüber geflogen und es fällt mir auf dass:

          "select * from `customers` where `orders_id`

          was nicht stimmen könnte.

          Kommentar

          Lädt...
          X