OSCommerce Export in OpenCart Format

Vorhaben

Dieses Script ermöglicht den Export der OSCommerce Daten als Excel Datei. Das Format orientiert sich dabei am OpenCart Export/Import Tool (0 Klicks), kann jedoch frei angepasst werden. Es werden beliebig viele Untersprachen (z.B. Deutsch und Englisch) gleichzeitig unterstützt. Daneben sind noch einige weitere Funktionen verfügbar (siehe unten). Zur Zeit können die Produkte und die Bild-Listen exportiert werden.

Eine Bitte

Ich habe viel Arbeit in das Tool investiert und nehme auch noch weiterhin Ergänzungen daran vor. Da ähnliche Scripte teilweise für horrende Summen verkauft werden, wollte ich es auch (wenngleich günstiger) gegen einen Betrag x anbieten.

Nun bin ich allerdings auch der Meinung, dass Wissen im Netz kostenfrei weitergegeben und vermehrt werden sollte und daher stelle ich es hier doch vollkommen kostenlos und unter der fairen MIT Lizenz zur Verfügung.

Wenn euch das Script geholfen hat, würde ich mich über eine kleine Aufmerksamkeit in Form einer Spende sehr freuen.

Funktionen

Export der folgenden Daten:

  • Produkt ID
  • Name (de-DE)
  • Name (en-gb)
  • Kategorien
  • Menge (Lagerbestand)
  • Modell (aus ID)
  • Bildname (Bilder bitte manuell auf den Server transferieren)
  • Preis
  • Datum (hinzugefügt)
  • Datum (geändert)
  • Status
  • Steuerklassen-ID
  • Beschreibung (de-DE)
  • Beschreibung (en-gb)

Außerdem:

  • Multi-Sprachen Unterstützung d.h. wenn im Shop die Produkte mit verschiedenen Sprachen eingestellt wurden, werden alle exportiert.
  • Multi-Bild Unterstützung d.h. auch mehrere Produkt-Bilder in einem Artikel werden für diesen übernommen.
  • Umformen von alten Kategorie-IDs auf neue IDs
  • SEO URLs erzeugen (der Titel wird in ein SEO konformes Format umgewandelt)
  • Konnte keine SEO URL erzeugt werden, kann optional ein Platzhalter (fortlaufend nummeriert) genutzt werden
  • MwSt. Korrektur von 16% auf 19%
  • Wenn kein Titel oder keine Beschreibung gefunden wurde, wird optional ein Platzhalter genutzt
  • … (mehr Funktionen werden bei Bedarf integriert)

Nutzung

1. Herunterladen

Ich habe das Script am Ende des Beitrags eingefügt. Markiert den Inhalt und kopiert ihn in eine leere Text-Datei. Diese passt ihr (wie unten beschrieben) an und speichert sie als !!export-tool.php!!

2. Konfigurieren

Damit das Script die Datenbank mit den OSCommerce Daten öffnen kann, müssen die Zugangsdaten darin gespeichert werden:

/* Einstellungen für den Datenbank-Zugriff */

$dbuser = "";                      /* Benutzername */
$dbpass = "";                      /* Passwort */
$dbhost = "localhost";             /* Host (z.B. localhost) */
$dbname = "";                      /* Name der OSCommerce Datenbank */

In den Einstellungen kann neben den Zugangsdaten für die Datenbank auch noch weiteres eingestellt werden.

  • Es kann ein Prefix-Text für die Bilder (z.B. eine URL oder Pfad-Angabe) gesetzt werden
  • Die Korrektur der Mehrwertsteuer von 16% auf 19% kann aktiviert / deaktiviert werden
  • Es kann die Nutzung von Google-Fonts im Webinterface deaktivert werden
  • Die Klasse der Mehrwertsteuer (Standard: 1 und 2) kann auf beliebige Werte geändert werden
  • Die alten Kategorie-Nummern können durch die Nummern im neuen Shop ersetzt werden

3. Hochladen

Jetzt könnt ihr das Script auf den Webspace mit eurem OSCommerce Shop hochladen. Die Chmod-Rechte müsst ihr auf 755 oder 777 setzen. Anschließend ruft ihr es auf:

4. Listen herunterladen

Jetzt habt ihr die Möglichkeit, die Daten als Excel Datei herunter zu laden oder direkt im Browser anzuzeigen. Die exportierte Excel Tabelle kann nicht direkt mit dem Import-Tool verarbeitet werden. Die Daten bitte per Copy & Paste in eine zuvor mit dem Export/Import Tool exportierte Tabelle einfügen.

Durch die HTML zu Excel Umwandlung müssen alle < und > ersetzt werden. Diese werden als ::lks:: bzw. ::rts:: in der Datei ausgegeben. Mit der Tastenkombination Strg+H können alle ::lks:: durch < und alle ::rts:: durch > ersetzt werden.

Wer diesen Vorgang lieber am Ziel-Server mit einem SQL Befehl machen möchte, kann auch dies tun
bitte vorher zur Sicherheit ein Backup machen!

Hier am Beispiel der OpenCart Installation:

UPDATE oc_product_description SET description = replace(description, ':lks:', '<')

und

UPDATE oc_product_description SET description = replace(description, ':rts:', '>')

Produkt-Bilder

Wie schon beschrieben werden zwar die Bild-Links (bzw. Namen) exportiert, nicht aber die Bilder als solche. OpenCart ist in dieser Hinsicht aber dankbar und ihr könnt mit wenigen Handgriffen die Bilder einbinden.

Wenn Ihr die Variable $img_prefix unverändert auf catalog/img/ belassen habt, dann müsst ihr nur alle Bilder aus:
!!/oscommerce/images/!!
mit einem FTP-Programm herunterladen und anschließend in
!!/opencart/image/catalog/img/!!
hochladen. Ab diesem Zeitpunkt werden alle Produkt-Bilder im Shop angezeigt.

Das Script

<?php

$version = "V1.4.6";
/*
xGui.de OSCommerce Exportier Werkzeug V1.4.6
---------------------------------------------
Dieses Script ermöglicht den Export der OSCommerce Daten als Excel Datei. 
Das Format orientiert sich dabei am OpenCart Export/Import Tool, kann jedoch frei angepasst werden.
Es werden beliebig viele Untersprachen unterstützt.


MIT-Lizenz
--------------------------------------------- 
Copyright (c) 2016 Marco Heizmann (xGui.de)
Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu nutzen, inklusive und ohne Ausnahme mit dem Recht, sie zu verwenden, zu kopieren, zu verändern, zusammenzufügen, zu veröffentlichen, zu verbreiten, zu unterlizenzieren und/oder zu verkaufen, und Personen, denen diese Software überlassen wird, diese Rechte zu verschaffen, unter den folgenden Bedingungen:

Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.

DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.
*/

/* ------------------------------------------- */

/* Einstellungen für den Datenbank-Zugriff */

$dbuser = "";                           /* Benutzername */
$dbpass = "";                       /* Passwort */
$dbhost = "localhost";      /* Host (z.B. localhost) */
$dbname = "";                           /* Name der OSCommerce Datenbank */

/* Optionale Einstellungen */

$img_prefix = "catalog/img/";                   /* Bild-Vorsatz (z.B. neuer Pfad)*/
$mwst_korrektur = true;                         /* Preise von 16% auf 19% korrigieren (Endpreis bleibt gleich) */
$google_fonts = true;                           /* Nutze Google Schriftarten für das WebInterface? */

$titel_platzhalter = "Kein Titel / no title";               /* Platzhalter wenn kein Titel gefunden wurde? leer = deaktiviert */
$desc_platzhalter = "Keine Beschreibung / no description";  /* Platzhalter wenn kein Text gefunden wurde? leer = deaktiviert */
$seo_platzhalter = "seo-";                                  /* Platzhalter wenn keine SEO-URL erzeugt werden konnte? leer = deaktiviert */

/* Umbennenung der Steuerklassen-ID */

$mwst_altneu[1] = "11";                         /* Ersetzt die MwSt ID 1 durch 11 */
$mwst_altneu[2] = "12";                         /* Ersetzt die MwSt ID 2 durch 12 */

/* Umbennenung der Kategorien */

$kat_altneu[28] = "64";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[52] = "65";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[26] = "66";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[64] = "67";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[23] = "68";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[24] = "69";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[27] = "70";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[35] = "71";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[30] = "72";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[55] = "60";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[60] = "61";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[39] = "62";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[100] = "73";                            /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[43] = "74";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[42] = "75";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[47] = "78";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[40] = "63";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[46] = "76";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */
$kat_altneu[93] = "77";                         /* Ersetzt die [alte] Kategorie ID durch eine "neue" */

/* Nur ändern, wenn erforderlich */

$sprache[2] = "de-DE";                          /* OSCommerce Sprach-ID (deutsch) zu Tabellenname */
$sprache[4] = "en-gb";                          /* OSCommerce Sprach-ID (englisch) zu Tabellenname */

/* ------------------------------------------- */

/* Ab hier sind keine Änderungen erforderlich */

/* Produkt-Abfrage */
if( isset($_GET["export"]) && $_GET["export"] == "produkte") {

    /* Header (Export order Direktanzeige)*/
    if( isset($_GET["down"]) && $_GET["down"] == "ja") {
        header("Content-type: application/vnd-ms-excel");
        header("Content-Disposition: attachment; filename=Dateiname.xls");
    }

    /* Datenbank Anfrage Befehl definieren */
    $sql = "select p.products_id AS product_id, pd.language_id AS lng_id, pd.products_name AS namex, p2c.categories_id AS kategorie, p.products_quantity AS quantity, p.products_price AS price, p.products_tax_class_id AS tax_class_id, p.products_image AS image_name, p.products_date_added AS date_added, p.products_last_modified AS date_modified, pd.products_description AS descx, p.products_status AS status from products p, products_description pd, products_to_categories p2c where p.products_id = p2c.products_id and pd.products_id = p2c.products_id  ORDER BY p.products_id";

    /* DB Verbindung aufbauen */
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
    if($mysqli->connect_errno) {
        die("Datenbank-Verbindung fehlgeschlagen: " . $mysqli->connect_error );
    }

    /* Anfrage senden */
    $result = mysqli_query($mysqli, $sql) or trigger_error("Datenbank-Abfrage fehlgeschlagen: <b>$sql</b> <br> Fehler: ". mysqli_error($mysqli), E_USER_ERROR);

    /* Unterfunktionen zur Inhalts-Bereinigung */
    function cleanData($str="") {
        //$str = preg_replace("/<br>/", "::br::", $str);
        $str = preg_replace("/</", ":lks:", $str);
        $str = preg_replace("/>/", ":rts:", $str);
        $str = preg_replace("/\t/", "", $str);
        $str = preg_replace("/\r?\n/", "", $str);
        if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
        return $str;
    }
    function cleanPreis($str="") {
        $str = str_replace(".", ",", $str);
        return cleanData( $str );
    }
    function cleanStatus($str="") {
        if($str==1) {
            return "true";
        } else {
            return "false";
        }
    }
    $seocounter = 1;
    function seoUrl($str="") {

        // Globalisierung
        global $seo_platzhalter;
        global $seocounter;

        // In Kleinbuchstaben und UTF8 umwandeln
        $str = utf8_encode(strtolower($str));

        // Deutsche Sonderzeichen umformen und nochmal in Kleinbuchstaben umwandeln
        $search = array("Ä", "Ö", "Ü", "ä", "ö", "ü", "ß", "´");
        $replace = array("Ae", "Oe", "Ue", "ae", "oe", "ue", "ss", "");
        $str = strtolower(str_replace($search, $replace, $str));

        // Alle Zeichen, die keine Zahl oder kein Buchstabe sind durch - ersetzen
        $str = preg_replace('/[^-0-9A-Za-z]+/', '-', $str);

        // Trim
        $str = trim($str, '-');

        // Multiple "-" entfernen
        $str = preg_replace('/\-+/', '-',$str);

        // Wenn keine SEO-URL erzeugt werden konnte, dann Platzhalter nutzen (wenn gesetzt)
        $strcheck = preg_replace('/[^0-9A-Za-z]+/', '', $str);
        if(strlen($strcheck) < 1 && strlen($seo_platzhalter) > 0) {
            $str = $seo_platzhalter . $seocounter;
            $seocounter=$seocounter+1;
        }
        return $str;
    }

    /* Datenbank Rückgabe durchlaufen */
    if($result) {

        $return_array = [];
        while($row = mysqli_fetch_assoc($result)) {

            // Daten in Array speichern
            $return_array[ $row['product_id'] ]['product_id'] = $row['product_id'];

            /* Umbennenung der Kategorien */
            if( array_key_exists( $row['kategorie'], $kat_altneu) ) {
                $return_array[ $row['product_id'] ]['kategorie'] = $kat_altneu[ $row['kategorie'] ];
            } else {
                $return_array[ $row['product_id'] ]['kategorie'] = $row['kategorie'];
            }

            $return_array[ $row['product_id'] ]['quantity'] = $row['quantity'];

            // MwSt. von 16% auf 19% korrigieren
            if($mwst_korrektur && $row['tax_class_id']=="1") {
                $return_array[ $row['product_id'] ]['price'] = ($row['price'] * 1.16) / 1.19;
            } else {
                $return_array[ $row['product_id'] ]['price'] = $row['price'];
            }

            // Umbennenung der Steuerklassen-ID
            if( array_key_exists( $row['tax_class_id'], $mwst_altneu) ) {
                $return_array[ $row['product_id'] ]['tax_class_id'] = $mwst_altneu[ $row['tax_class_id'] ];
            } else {
                $return_array[ $row['product_id'] ]['tax_class_id'] = $row['tax_class_id'];
            }

            $return_array[ $row['product_id'] ]['image_name'] = $row['image_name'];
            $return_array[ $row['product_id'] ]['status'] = $row['status'];
            $return_array[ $row['product_id'] ]['date_added'] = $row['date_added'];
            $return_array[ $row['product_id'] ]['date_modified'] = $row['date_modified'];

            // Multi-Sprachen-Unterstützung
            $return_array[ $row['product_id'] ]['lng'][ $row['lng_id'] ]['table'] = $sprache[ $row['lng_id'] ];
            $return_array[ $row['product_id'] ]['lng'][ $row['lng_id'] ]['name'] = $row['namex'];
            $return_array[ $row['product_id'] ]['lng'][ $row['lng_id'] ]['desc'] = $row['descx'];
        }

        /* Diese Ausgabe kann nach den eigenen Wünschen angepasst werden. */
        echo "<table width=\"100%\" cellpadding=\"1\" cellspacing=\"1\">";
        echo "<tr>".
            "<td>product_id</td>";

        // Multi-Sprachen-Unterstützung
        foreach ($sprache as $row) {
            echo "<td>name(".$row.")</td>";
        }

        echo "<td>categories</td>".
            "<td>sku</td>".
            "<td>upc</td>".
            "<td>ean</td>".
            "<td>jan</td>".
            "<td>isbn</td>".
            "<td>mpn</td>".
            "<td>location</td>".
            "<td>quantity</td>".
            "<td>model</td>".
            "<td>manufacturer</td>".
            "<td>image_name</td>".
            "<td>shipping</td>".
            "<td>price</td>".
            "<td>points</td>".
            "<td>date_added</td>".
            "<td>date_modified</td>".
            "<td>date_available</td>".
            "<td>weight</td>".
            "<td>weight_unit</td>".
            "<td>length</td>".
            "<td>width</td>".
            "<td>height</td>".
            "<td>length_unit</td>".
            "<td>status</td>".
            "<td>tax_class_id</td>".
            "<td>seo_keyword</td>";

        // Multi-Sprachen-Unterstützung
        foreach ($sprache as $row) {
            echo "<td>description(".$row.")</td>";
        }
        // Multi-Sprachen-Unterstützung
        foreach ($sprache as $row) {
            echo "<td>meta_title(".$row.")</td>";
        }
        // Multi-Sprachen-Unterstützung
        foreach ($sprache as $row) {
            echo "<td>meta_description(".$row.")</td>";
        }
        // Multi-Sprachen-Unterstützung
        foreach ($sprache as $row) {
            echo "<td>meta_keywords(".$row.")</td>";
        }

        echo "<td>stock_status_id</td>".
            "<td>store_ids</td>".
            "<td>layout</td>".
            "<td>related_ids</td>";

        // Multi-Sprachen-Unterstützung
        foreach ($sprache as $row) {
            echo "<td>tags(".$row.")</td>";
        }

        echo "<td>sort_order</td>".
            "<td>subtract</td>".
            "<td>minimum</td>".
        "</tr>";

        foreach ($return_array as $row) {

            /* Rückgabe bei Produkt-Abfrage*/
            /* product_id, namex, kategorie, quantity, price, tax_class_id, image_name, descx, status, date_added, date_modified */

            /* Diese Ausgabe kann nach den eigenen Wünschen angepasst werden. */
            echo "<tr>".
                "<td>".cleanData($row['product_id'])."</td>";

            // Multi-Sprachen-Unterstützung
            foreach ($row['lng'] as $rowLNG) {
                echo "<td>";
                // Platzhalter-Funktion
                if( strlen( cleanData($rowLNG['name']) ) < 1 && strlen($titel_platzhalter) > 0) {
                    echo $titel_platzhalter;
                } else {
                    echo cleanData($rowLNG['name']);
                }
                echo "</td>";
            }

            echo "<td>".cleanData($row['kategorie'])."</td>".
                "<td></td>".
                "<td></td>".
                "<td></td>".
                "<td></td>".
                "<td></td>".
                "<td></td>".
                "<td></td>".
                "<td>".cleanPreis($row['quantity'])."</td>".
                "<td>".cleanData($row['product_id'])."</td>".
                "<td></td>".
                "<td>". $img_prefix . cleanData($row['image_name'])."</td>".
                "<td>yes</td>".                     
                "<td>".cleanPreis($row['price'])."</td>".
                "<td></td>".
                "<td>".cleanData($row['date_added'])."</td>".
                "<td>".cleanData($row['date_modified'])."</td>".
                "<td></td>".
                "<td></td>".
                "<td>kg</td>".
                "<td></td>".
                "<td></td>".
                "<td></td>".
                "<td>cm</td>".
                "<td>".cleanStatus($row['status'])."</td>".
                "<td>".cleanData($row['tax_class_id'])."</td>".
                "<td></td>";

            // Multi-Sprachen-Unterstützung
            foreach ($row['lng'] as $rowLNG) {  
                echo "<td>";
                // Platzhalter-Funktion
                if( strlen( cleanData($rowLNG['desc']) ) < 1 && strlen($desc_platzhalter) > 0) {
                    echo $desc_platzhalter;
                } else {
                    echo cleanData($rowLNG['desc']);
                }
                echo "</td>";
            }
            // Multi-Sprachen-Unterstützung
            foreach ($row['lng'] as $rowLNG) {
                echo "<td>".seoUrl($rowLNG['name'])."</td>";
            }
            // Multi-Sprachen-Unterstützung
            foreach ($row['lng'] as $rowLNG) {
                echo "<td></td>";
                echo "<td></td>";
            }

            echo "<td>6</td>".
                "<td>0</td>".
                "<td>0:</td>".
                "<td></td>";

            // Multi-Sprachen-Unterstützung
            foreach ($row['lng'] as $rowLNG) {
                echo "<td></td>";
            }

            echo "<td>1</td>".
                "<td>true</td>".
                "<td>1</td>".
            "</tr>";
        }
        echo "</table>";
    }

    /* Datenbank-Verbindung trennen */
    mysqli_close($mysqli);

    exit;
}

/* Bilder-Abfrage */
if( isset($_GET["export"]) && $_GET["export"] == "bilder") {

    /* Header (Export order Direktanzeige)*/
    if( isset($_GET["down"]) && $_GET["down"] == "ja") {
        header("Content-type: application/vnd-ms-excel");
        header("Content-Disposition: attachment; filename=Dateiname.xls");
    }

    /* Datenbank Anfrage Befehl definieren */
    $sql = "SELECT products_id, products_image, products_subimage1, products_subimage2, products_subimage3, products_subimage4, products_subimage5, products_subimage6 FROM products WHERE 1 ORDER BY products_id";

    /* DB Verbindung aufbauen */
    $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
    if($mysqli->connect_errno) {
        die("Datenbank-Verbindung fehlgeschlagen: " . $mysqli->connect_error );
    }

    /* Anfrage senden */
    $result = mysqli_query($mysqli, $sql) or trigger_error("Datenbank-Abfrage fehlgeschlagen: <b>$sql</b> <br> Fehler: ". mysqli_error($mysqli), E_USER_ERROR);

    /* Datenbank Rückgabe durchlaufen */
    if($result) {

        $return_array = [];
        while($row = mysqli_fetch_assoc($result)) {

            // Daten in Array speichern

            // Hauptbild
            $current_id = 0;
            $return_array[ $row['products_id'] ][$current_id]['products_id'] = $row['products_id'];
            $return_array[ $row['products_id'] ][$current_id]['products_image'] = $row['products_image'];
            $return_array[ $row['products_id'] ][$current_id]['sort_order'] = $current_id + 1;

            // Sub-Bild 1-6
            while( $current_id < 6) {
                $current_id+=1;
                if( $row['products_subimage' . $current_id] && strlen( $row['products_subimage' . $current_id] )>1 ) {
                    $return_array[ $row['products_id'] ][$current_id]['products_id'] = $row['products_id'];
                    $return_array[ $row['products_id'] ][$current_id]['products_image'] = $row['products_subimage' . $current_id];
                    $return_array[ $row['products_id'] ][$current_id]['sort_order'] = $current_id + 1;
                }
            }

        }

        /* Diese Ausgabe kann nach den eigenen Wünschen angepasst werden. */
        echo "<table width=\"100%\" cellpadding=\"1\" cellspacing=\"1\">".
        "<tr>".
            "<td>product_id</td>".
            "<td>image</td>".
            "<td>sort_order</td>".
        "</tr>";

        foreach ($return_array as $row) {

            /* Diese Ausgabe kann nach den eigenen Wünschen angepasst werden. */
            foreach ($row as $rowline) {
                echo "<tr>".
                    "<td>".$rowline['products_id']."</td>".
                    "<td>". $img_prefix . $rowline['products_image']."</td>".
                    "<td>".$rowline['sort_order']."</td>".
                "</tr>";
            }
        }
        echo "</table>";
    }

    /* Datenbank-Verbindung trennen */
    mysqli_close($mysqli);

    exit;
}

?>

<?php
if($google_fonts) {
    echo '<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Roboto" rel="stylesheet">';
}
?>
<html><head><title>xGui.de OSCommerce Export-Werkzeug <?php echo $version; ?></title></head><body style="font-family: 'Roboto', sans-serif;">
<style>
    .material-icons, .icon-text {
        vertical-align: middle;
    }
    a { 
        text-decoration:none; color:black; 
    }
    .box {
        border:1px solid grey; 
        border-radius:20px; 
        background-color:#fbfbf8; 
        padding: 20px; 
        margin:30px
    }
</style>
<div class="box">
    <h1>xGui.de OSCommerce Export-Werkzeug <?php echo $version; ?></h1>
    Dieses Script ermöglicht den Export der OSCommerce Daten als Excel Datei. Das Format orientiert sich dabei am <a href="https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=17">OpenCart Export/Import Tool *</a>, kann jedoch frei angepasst werden. Es werden beliebig viele Untersprachen unterstützt.<br>
    <br>
    Wenn euch das Script geholfen hat, würde ich mich über eine kleine Aufmerksamkeit in Form einer Spende sehr freuen<br>
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="Y4PTNUB3PCF8J">
    <input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
    <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
    </form>
</div>

<?php
    if(empty($dbuser)){
?>
<div style="background-color:#ffe9e9;" class="box">
    <span style="color:red;"><b>Bitte die Zugangsdaten für den Datenbank-Zugriff im Quellcode anpassen.</b><br></span>
</div>
<?php
    }
?>

<div class="box">
    <h3>Produkte (Reiter: Products)</h3>
    <a href="?export=produkte&down=ja"><b>
    <i class="material-icons">file_download</i> Produkte als Excel-Datei exportieren.</b></a><br>
    <a href="?export=produkte&down=nein"><b>
    <i class="material-icons">remove_red_eye</i> Produkte direkt hier anzeigen.</b></a><br>
    <br>
    <h3>Zusätzliche Bilder (Reiter: AdditionalImages)</h3>
    <a href="?export=bilder&down=ja"><b>
    <i class="material-icons">file_download</i> Zusätzliche Bilder als Excel-Datei exportieren.</b></a><br>
    <a href="?export=bilder&down=nein"><b>
    <i class="material-icons">remove_red_eye</i> Zusätzliche Bilder direkt hier anzeigen.</b></a><br>   
</div>

<div class="box">
    * Die exportierte Excel Tabelle kann nicht direkt mit dem Import-Tool verarbeitet werden. Die Daten bitte per Copy & Paste in eine zuvor mit dem Export/Import Tool exportierte Tabelle einfügen. Durch die HTML zu Excel Umwandlung müssen alle  < und > ersetzt werden. Diese werden als ::lks:: bzw. ::rts:: in der Datei ausgegeben. Mit der Tastenkombination Strg+H können alle ::lks:: durch < und alle ::rts:: durch > ersetzt werden.
</div>

<div class="box">
    <b>Copyright (c) 2016 Marco Heizmann (xGui.de)</b><br>
    <br>
    MIT-Lizenz:<br>
    <br>
    Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der zugehörigen Dokumentationen (die "Software") erhält, die Erlaubnis erteilt, sie uneingeschränkt zu nutzen, inklusive und ohne Ausnahme mit dem Recht, sie zu verwenden, zu kopieren, zu verändern, zusammenzufügen, zu veröffentlichen, zu verbreiten, zu unterlizenzieren und/oder zu verkaufen, und Personen, denen diese Software überlassen wird, diese Rechte zu verschaffen, unter den folgenden Bedingungen:<br>
    <br>
    Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien der Software beizulegen.<br>
    <br>
    DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN.
</div>

</body></html>

Marco hat 29 Einträge geschrieben

Seit über 20 Jahren scripte, programmiere und designe ich größere und kleinere Projekte. Da ich mein Wissen gerne teile, habe ich oYoX.de und XGui.de ins Leben gerufen. Auf oYoX.de findet ihr Scripte, Lösungen, Tipps und Tricks für Linux. Auf XGui.de werde ich detailierte Anleitungen für verschiedene Projekte veröffentlichen.

Eine Antwort hinterlassen

Deine eMail Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>