Shop Hosting
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Generierung/Download einer CSV-Datei im Frontend

    AndreasB

    • Neu im Forum
    • Beiträge: 6
    • Geschlecht:
    Hallo,

    beim Klick auf einen Link im Frontend soll eine CSV-Datei mit dem aktuellen Artikelbestand generiert werden und auf der Festplatte (nicht auf meinem Server) gespeichert werden.

    Da es sich um verschiedene Dateien mit unterschiedlichen Feldern etc. handelt, die ständig auch per Cronjob heruntergeladen werden, wäre das dauernde Updaten der Dateien im Backend extrem zeitaufwendig.

    Im alten OSC Shop war das kein Problem. Ich habe es mit den entsprechenden .php-Dateien aus den OSC Shop versucht aber die generieren leider nichts ausser der Kopfzeile.

    Ich habe hier leider keinen Ansatz gefunden oder bin blind. Braucht das niemand?

    MfG
    Andreas

    Linkback: https://www.modified-shop.org/forum/index.php?topic=32581.0

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Generierung/Download einer CSV-Datei im Frontend
    Antwort #1 am: 25. März 2015, 12:08:31
    Nur mal zur Klärung was Du willst:

    Jeder soll einen Link anklicken können und es wird eine CSV-Datei erzeugt, die dann jeder runterladen kann?

    Oder nur der Admin?

    Soll das nur manuell gehen oder soll da was automatisiert in ein anderes Programm übernommen werden?

    Und was willst Du im Backend updaten?

    AndreasB

    • Neu im Forum
    • Beiträge: 6
    • Geschlecht:
    Re: Generierung/Download einer CSV-Datei im Frontend
    Antwort #2 am: 25. März 2015, 12:30:40
    Ich stelle den Interessenten die Links für die verschiedenen Dateien für den Import in sämtliche andere Shop-Systeme zur Verfügung. Für jedes Shop-System gibt es eine extra .php-Datei auf meinem Server, mit der die CSV-Datei generiert wird. Der Händler-Kunde, der eine Datei zum Import in seinen Shop benötigt, klick dann auf den entsprechenden Link, die Datei wird generiert und auf der Festplatte des Anfordernden gespeichert. Oder der Link wird einfach per Cronjob abgerufen.

    Was die die Leute mit den Dateien machen, spielt keine Rolle. In meinem Shop wird also nichts gespeichert oder Upgedated.

    Eine OSC Datei z.B.:
    Code: PHP  [Auswählen]
    <?php
    require_once('includes/configure.php');
    require('includes/application_top.php');

    header("content-type: text/csv");
    header("content-disposition: attachment; filename=\"csv_standard.csv\"");

    $hostname_oscommerce = DB_SERVER;
    $database_oscommerce = DB_DATABASE;
    $username_oscommerce = DB_SERVER_USERNAME;
    $password_oscommerce = DB_SERVER_PASSWORD;

    $language_id = 2;
    $waehrung = "EUR";
    $kategorie = " ";

    $cat = (defined('DIR_WS_HTTP_CATALOG'))?DIR_WS_HTTP_CATALOG:DIR_WS_CATALOG;

    $limit = "";
    if($GLOBALS["count"] > 0)
    {
            $limit = " limit ".(int)$GLOBALS["begin"].",".(int)$GLOBALS["count"];
    }
    if($GLOBALS["timelimit"] > 0) set_time_limit($GLOBALS["timelimit"]);
    if($GLOBALS["lang"] != "") $language_id = (int)$GLOBALS["lang"];
    if($GLOBALS["cur"] != "") $waehrung = $GLOBALS["cur"];

    $sql_query = "select * from products, products_description where products.products_id = products_description.products_id and products_description.language_id = $language_id $limit ORDER BY products_name ASC";

    $con = mysql_pconnect($hostname_oscommerce, $username_oscommerce, $password_oscommerce) or die ("Unable to connect to SQL server");

    mysql_select_db($database_oscommerce,$con) or die("Unable to select database.");

    $sql_result = mysql_query($sql_query);

    echo "\"kategorie1\";\"kategorie2\";\"kategorie3\";\"artikelnummer\";\"ean\";\"artikelname\";\"kurzbeschreibung\";\"beschreibung\";\"bild\";\"steuersatz\";\"ek netto\";\"vk brutto\";\"uvp\";\"waehrung\";\"lagerbestand\";\"aktiv\";\"lieferant\";\r\n";

    while($row = mysql_fetch_array($sql_result))
    {
            $tax = tep_get_tax_rate($row['products_tax_class_id']);
        $steuer     = (100+$tax)/100;
        $preis = $row["products_price"];
            $preis_ek = number_format($preis,2,",","");
        $preis_msrp = $row["products_msrp"];
            $preis_msrp = number_format($preis_msrp,2,",","");
            $bezeichnung = escaper1($row["products_name"]);
            $beschreibung = escaper1($row["products_description"]);
            $product_desc = substr(strip_tags($row["products_description"]), 0, 300);
            $product_desc = str_replace("\r\n"," ",$product_desc);
            $words = preg_split('/\s/', $product_desc);
            $short_desc = implode(array_slice($words, 0, 5), ' ')."...";
            $url = HTTP_SERVER.$cat."product_info.php?products_id=".$row["products_id"];
            $bild = $row["products_image"];
            $artikel_id     = $row["products_id"];
            $artikel_nr     = $row["products_model"];
            $ean = $row["products_ean"];
            $hersteller     = $row["manufacturers_name"];
            $bestand = $row["products_quantity"];
            $aktiv = $row["products_status"];
            $bild = $row["products_image"];

        $kategorie = ""; // default Kategorie, die am besten zum shop passt  
            if($row["products_id"] > 0) // Nur Artikel mit Kategorien exportieren
            {
            $bez = HoleKategorie($row["products_id"]);
            if(strpos($bez,"Zeug 1")>0) { $kategorie = "Zeug 1"; }
            if(strpos($bez,"Zeug 2")>0) { $kategorie = "Zeug 2"; }

    // EOF - Kategorien machen

            $rw["bezeichnung"] = $bez;
            }
           
            if ($kategorie != "")
               { echo "\"$kategorie\";\"$hersteller\";\"\";\"$artikel_nr\";\"$ean\";\"$bezeichnung\";\"$short_desc\";\"$beschreibung\";\"$bild\";\"$tax\";\"$preis_ek\";\"\";\"$preis_msrp\";\"$waehrung\";\"$bestand\";\"$aktiv\";\"\";\r\n"; }
    }

    function HoleKategorie($produkt_id)
    {
            global $katcache,$language_id;
           
            $rw = "";
            $kat_id = (int)GetSqlValue("select categories_id as value from products_to_categories where products_id=$produkt_id");
            if($kat_id > 0)
            {
                    if($katcache[$kat_id] != "")
                    {
                            return $katcache[$kat_id];
                    }

                    $id = $kat_id;
                    while($id)
                    {
                            $bez = GetSqlValue("select categories_name as value from categories_description where language_id = $language_id and categories_id = $id");
                            $id = (int)GetSqlValue("select parent_id as value from categories where categories_id = $id");
                            if($bez != "<null>")
                            {
                                    if($rw != "")
                                            $rw = $bez."/".$rw;
                                    else
                                            $rw = $bez;
                            }
                    }
                    $katcache[$kat_id] = $rw;
            }
            return $rw;
    }

    function escaper1($text)
    {
            $rw = $text;
            $rw = str_replace("\"","'",$rw);
    //      $rw = str_replace(";",",",$rw);
            $rw = str_replace("\n"," ",$rw);
            $rw = str_replace("\r"," ",$rw);
            $rw = str_replace("&nbsp;"," ",$rw);
            $rw = strip_tags($rw, '<a><b><ul><li><p><strong>' );
            //if( strpos($rw,",") ) $rw = "\"$rw\"";
            return $rw;
    }

    function escaper2($text)
    {
            $rw = $text;
            $rw = str_replace("\"","'",$rw);
    //      $rw = str_replace(";",",",$rw);
            $rw = str_replace("\n"," ",$rw);
            $rw = str_replace("\r"," ",$rw);
            $rw = str_replace("&nbsp;"," ",$rw);
            $rw = strip_tags($rw);
            //if( strpos($rw,",") ) $rw = "\"$rw\"";
            return $rw;
    }

    function GetSqlValue($sqlstring,$rwfield = "value")
    {
            $rw = "<null>";
            $an_id = mysql_query($sqlstring);
            if($an_id)
            {
                    if($zeile = mysql_fetch_array($an_id))
                    {      
                            $rw = $zeile["$rwfield"];
                    }
                    mysql_free_result($an_id);
            }
            else
            {
                    echo "Fehlerhafter SQL-Befehl \"$sqlstring\"";
            }
            return $rw;
    }
    ?>
     

    webald

    • modified Team
    • Beiträge: 2.791
    Re: Generierung/Download einer CSV-Datei im Frontend
    Antwort #3 am: 25. März 2015, 12:54:50
    Deine Datei kann nicht funktionieren. Bitte schau Dir die includes/application_top.php an.

    Dort ist die configure.php bereits eingebunden und eine Verbindung zu Datenbank besteht ebenfalls schon. Weiter habe ich mir Dein Script nicht angeschaut. Also keine Ahnung ob Tabellen und Spalten namen richtig sind, die Abfragen korrekt formuliert sind,....

    Das mußt du dann slber umsetzen oder jmd. beauftragen. Sorry.

    AndreasB

    • Neu im Forum
    • Beiträge: 6
    • Geschlecht:
    Re: Generierung/Download einer CSV-Datei im Frontend
    Antwort #4 am: 25. März 2015, 14:51:13
    Danke! Alles klar. Läuft!

    Wer's braucht:

    Code: PHP  [Auswählen]
    <?php
    require('includes/application_top.php');

    header("content-type: text/csv");
    header("content-disposition: attachment; filename=\"csv_standard.csv\"");

    $language_id = 1;
    $kategorie = "";

    $sql_query = xtc_db_query("SELECT p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_ean, p.products_image, p.products_price, p.products_weight, p.products_quantity, p.products_status, p.products_tax_class_id, m.manufacturers_name FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_MANUFACTURERS . " m ON p.manufacturers_id = m.manufacturers_id LEFT JOIN " . TABLE_PRODUCTS_DESCRIPTION . " pd ON p.products_id = pd.products_id AND pd.language_id = '1' LEFT JOIN " . TABLE_SPECIALS . " s ON p.products_id = s.products_id ORDER BY pd.products_name ASC");

    echo "\"categorie 1\";\"categorie 2\";\"categorie 3\";\"products model\";\"products ean\";\"products name\";\"products description\";\"image\";\"products price\";\"products msrp\";\"stock\";\"status\";\r\n";
     
    while ($row = xtc_db_fetch_array($sql_query))
    {
        $products_price = $row["products_price"];
        // ...... usw.

    ?>
     

    Die Datei kann z.B. mit http://meinshop.de/csv_datei.php generiert und gespeichert werden.
    0 Antworten
    1894 Aufrufe
    04. April 2012, 10:08:18 von Minas69
    4 Antworten
    4085 Aufrufe
    07. April 2011, 10:06:51 von Tomcraft
    12 Antworten
    8839 Aufrufe
    13. Dezember 2012, 17:26:24 von noRiddle (revilonetz)
    0 Antworten
    1190 Aufrufe
    01. April 2015, 16:35:57 von antiheld2000