Export beliebiger Datensätze aus xt:Commerce

Ich habe eine Applikation programmiert um beliebige Datensätze aus einer Datenbank im XML-Format zu exportieren. Momentan kann das Programm „nur“ xt:Commerce. Es exportiert anhand vorher definierter Regelsätze beliebige verschachtelte Abhängigkeiten von Datenbanktabellen in ein unterstütztes Format.

Momentan ist das nur XML, was aber die meisten Anwendungsfälle abdecken sollte. Als vordefinierte Regelsätze stehen „Offene Bestellungen“ und „Offene Bestellungen mit anschließender Statusänderung auf ‚Versendet'“ zur Verfügung. Diese Regelsätze können beliebig erweitert werden, oder man definiert sich eigene Regelsätze.

Die Software ist momentan noch im BETA Stadium, funktionierte aber bei meinen eigenen Tests bisher sehr gut. Je nach dem wie die Resonanz ist steht einer Erweiterung des Funktionsumfangs nichts im Wege.

Ich überlege ein XML-RPC Modul zu integrieren, um beliebiger externer Software den Zugriff auf die Datensätze ohne den Umweg über das händische Herunterladen der XML-Dateien zu gewähren.

Ich würde mich freuen wenn die Software jemandem nutzt, und bitte natürlich um entsprechendes Feedback zu Fehlern und Features.

Die Projektseite mit Screenshots, aktuellen Informationen und Download ist hier: Exanto Export

Das Programm wird unter der GPL Lizenz veröffentlicht und ist Open-Source.

Getagged mit: , , , , ,
46 Kommentare zu “Export beliebiger Datensätze aus xt:Commerce
  1. Mantis sagt:

    Hallo, Die Schnittstelle finde ich toll habe aber einige Probleme damit Lokal auf einem XAMMP System funktioniert es Super aus das auf Vista nicht mit dem IE zugegriffen werden kann nur mit Opera und Firefox. Ferner auf meinem VServer bekomme ich einen Safe Mode Fehler obwohl die Safe mode als „off“ erscheint in der PhP Info. Währe aber trotzdem Interessiert diese Schnittstelle weiter zu Entwickeln.

    Gruss

  2. IT sagt:

    Hallo Mantis,

    auf Vista und IE habe ich nie getestet, und will es ehrlich gesagt auch nicht 😉

    Hast du auf deinem Server PHP5 laufen? Ist vielleicht open_basedir o.ä. gesetzt? PHP hat da sehr viele Einstellungsmöglichkeiten.

  3. Manuel sagt:

    Super! Genau so etwas habe ich händeringend gesucht. Sehr fein – es klappt alles sehr gut.

    Eine Frage aber noch: Ich würde gerne Status auf „in Bearbeitung“ setzen, statt auf „versendet“. Aber, wenn ich in der relations/obsv.php den status von 3 auf 2 ändere, kriege ich nur eine Fehlermeldung, wenn ich mir die xml-Datei herunterladen will:

    Warning: Cannot modify header information – headers already sent by (output started at …admin/exanto-export/relations/obsv.php:1) in …admin/exanto-export/download_xml_file.php on line 19

  4. IT sagt:

    Hi Manuel,

    hast du evtl. die Datei mit vim bearbeitet? Im UTF-8 Modus hinterlässt der Editor manchmal ein paar Zeichen ganz am Anfang einer Datei (irgendwelches UTF-8 Gedöns), was dann zu solchen Fehlern führen kann.

    Prüfe es mal, indem du die Datei mit einem anderen Editor (nano, mcedit) öffnest. Es sind drei kryptische Zeichen ganz am Anfang der Datei.

  5. Manuel sagt:

    hmmm, wie ich gerade merke, sind die Bestellungen dann im xt-commerce-Admin komplett weg, wenn ich die Option „status auf versendet“ stelle und dann exportiere. Muss das so?

  6. IT sagt:

    Öh, nee die sollten zu sehen sein. Eventuell hast du einen Filter an, der die versendeten Bestellungen ausblendet? Irgendwas war da…

  7. Manuel sagt:

    Huch, danke für die schnelle Antwort 😉

    Also, ich hab die Datei mit dem win-Editor bearbeitet. Habe jetzt nen anderen Editor genommen, und jetzt kommt die Meldung nicht mehr…

    Werde nochmal neue Bestellungen eingeben und testen. Filter zum Ausblenden? Wo finde ich denn den – kommt mir zum ersten Mal unter…

  8. Manuel sagt:

    Ok, mit der Änderung in „Status = 2“ und der „sauberen“ Editierung klappt es jetzt. Bestellung ist noch da (richtiger Status) und wurde sauber exportiert. Sehr fein!

    Noch ne Frage – wie kann ich denn eigene Regeln anlegen – und wie muss die Datei dann heissen?

    (und gibt´s vielleicht eine Möglichkeit, die Dateien auch als csv exportieren zu können? g)

    Danke nochmal für die schnelle Hilfe!

    Gruß, Manuel

  9. IT sagt:

    Hi,

    ist egal wie es heißt, einfach eine vorhandene Relation nehmen und alle Vorkommen von „ob“ oder „obsv“ austauschen, außer bei ->xml_file, da gibt es momentan nur das eine für die orders.

    CSV ist mit der Struktur der Bestellungen nur sehr schwer realisierbar, da jedes Bestellungs-Element ja noch Kindelemente hat, welche wiederum Kindelemente haben können (Attribute etc.). Daher war XML meine erste Wahl, und es ist auch sehr viel flexibler als CSV.

    Wenn du das Programm erfolgreich einsetzt freue ich mich übrigens über einen Backlink 🙂

    Gruß, Ingo

  10. Lutz sagt:

    Hi,

    ich versuche grad ob.php eine zusätzliche Regel bei zu bringen. Konkret möchte ich zu jedem Produkt aus der Bestellung auch die kompletten Daten aus dem Katalog mit exportieren.

    Zwar bekomme ich mit dieser Zeile: $produkte = $relations[„ob“]->has_many(„products“, „products_id“, „orders_products_id“, „produkt“, „produkte“);

    eine Auswahl in „Spalten auswählen“ hin, kriege dann aber beim Export die Fehlermeldung: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/localhost/htdocs/xt/admin/exanto-export/classes/ExantoExport.class.php on line 371

    Was mache ich falsch ?

    Viele Grüße und danke für das sehr nützliche Tool.

    Lutz

  11. IT sagt:

    Hi Lutz,

    du kannst nur Spalten einfügen die auch in der Tabelle vorhanden sind. Die Spalten produkt/produkte gibt es wahrscheinlich nicht.

    Schau mal in die Methodendefinition, wofür die einzelnen Angaben bei ->has_many und ->has_one gebraucht werden. Die müssen halt korrekt definiert sein in den Relation-Dateien.

  12. Lutz sagt:

    Hi Ingo,

    wieder zu schnell gefragt und nicht erst die Hirnzellen massiert 🙂 Ich hab es hingebracht: $oprelation->has_many(„products_description“, „products_id“, „products_id“, „description“, „descriptions“);

    Schönes Wochende !

    Lutz

  13. Manuel sagt:

    Ich hab gerade mal nachgeforscht – die zu verwendende WaWi kann auch xml-Dateien „schlucken“, insofern passt es schon.

    Wenn die Sache live geht, gibts auch natürlich nen Backlink!

    Ich meld mich dann wieder.

    Schönes Wochenende, Manuel

  14. FaKe sagt:

    Hallo! Ich würde dieses Programm gerne nutzen um Bestellungen aus xtc zu exportieren und dann in EasyLog(DHL Software) zu importieren um daraus Versandlabels zu drucken. Jedoch schluckt Easylog nur csv Dateien.

    Hast du vlt eine Idee wie ich das sonst hinbekommen könnte? Grüße FaKe

  15. IT sagt:

    Hi FaKe,

    wenn du nur die Lieferadresse brauchst, dann brauchst du im Prinzip auch nicht diese Export-Software. Das kann sogar PHPMyAdmin als CSV exportieren.

    LG, Ingo

  16. FaKe sagt:

    Hi Ingo, danke für die schnelle Antwort! Bei den EasyLog Daten kommt noch mehr rein, wie zb. Gewicht der Ware. Ich will auch nicht unbedingt dass unsere Mitarbeiter in PHPMyAdmin rumhantieren.. ich sehe es kommen: „Oops ich habe ausversehen die Datenbank gelöscht“ 😉

    Gibt es da eine Möglichkeit? Habe sonst leider nichts vergleichbares gefunden.. :/ Greets FaKe

  17. IT sagt:

    Hallo FaKe,

    ich habe nicht vor den Skript mit CSV auszurüsten, da man damit sehr schlecht die komplex verschachtelten Datensätze exportieren kann.

    Die beste Möglichkeit ist wahrscheinlich das von jemandem programmieren zu lassen, dann hast du genau das Passende für deinen Arbeitsablauf.

    Gruß, Ingo

  18. FaKe sagt:

    mh okay, das wird wohl das Beste sein.. dann meine Frage: macht ihr soetwas? 🙂 ..wenn ja können wir evtl. per E-Mail in Kontakt treten und über den Preis reden 😉

    LG FaKe

  19. Mauel sagt:

    Ich bins noch einmal 😉

    Jetzt habe ich vom Testsystem, wo alles klappt auf das reale umgestellt. Und jetzt krieg ich nur das beim Aufruf: Warning: touch() [function.touch]: Utime failed: Operation not permitted in /home/…/admin/exanto-export/classes/ExantoExport.class.php on line 312 Fehler: Verzeichnis fÃŒr den Export nicht beschreibbar! Alle Unterverzeichnisse nebst exantoExport sind aber auf 777 …

  20. IT sagt:

    Ist bei der PHP-Installation eventuell das „touch“ Kommando deaktiviert? Manche PHP-Installationen verbieten das Ausführen von bestimmten Shellkommandos.

  21. Helge Siems sagt:
    Ich überlege ein XML-RPC Modul zu integrieren, um beliebiger externer Software den Zugriff auf die Datensätze ohne den Umweg über das händische Herunterladen der XML-Dateien zu gewähren.

    Ich wollte mal hoeflich fragen, ob es das schon gibt oder es konkrete Planungen dazu gibt. Hintergrund: Ich wuerde gerne haeufig wechselnde Artikel aus einem xt-c-Shop in WordPress anzeigen. Vielleicht koennen wir da irgendwie ins Geschaeft kommen. (?)

  22. Horst Horstensen sagt:

    Hallo,

    wir sind 2 Studenten, die im Rahmen eines Beleges Ihr Tool nutzen möchten. Nach Installation und Konfiguration startet das Tool zwar, jedoch bleibt nach Klick auf „Start“ der Bildschirm weiß und es passiert nichts mehr. Schreibrechte sind alle gesetzt und offene Bestellungen sind ebenfalls vorhanden. Woran kann das liegen? Danke im voraus.

  23. IT sagt:

    Hallo,

    es gibt wohl einen Bug im IE7, dieser zeigt die Inhalte nicht an. Ich kann es leider nicht debuggen momentan, aber dort ist das Problem 😉 Also am Besten einen guten Browser nehmen.

    Gruß!

  24. Horst Horstensen sagt:

    Danke für die Antwort, ABER: das o.g. Problem tritt im Firefox auf! 😉

  25. IT sagt:

    Gibt es irgendwelche Einträge in den Logs? Wenn gar nichts ausgegeben wird, tippe ich auf einen PHP-Fehler.

  26. OM sagt:

    Hallo IT, folgendes Problem, wir bekommen diese Fehlermeldung: Fatal error: main() [function.require]: Failed opening required ‚includes/application_top.php‘ (include_path=‘.:/usr/lib/php‘) in /homepages/44/d38630989/htdocs/admin/exanto_export.php on line 22 …evtl. nen Vorschlag zur linderung parat? Danke OM

  27. IT sagt:

    Hm, wurde der Skript denn in das xt:Commerce Verzeichnis entpackt? Er muss unter xt:c/admin/ liegen damit er funktioniert, da er u.a. die application_top.php von dort inkludiert.

  28. Denis Greiner sagt:

    Hallo IT, wir sind sehr interessiert an einem XML-RPC Modul. Wir könnten damit offene Bestellungen in unsere auf Filemaker basierte Lösung importieren. Sind arbeiten in diese Richtung schon vorangeschritten ?

  29. IT sagt:

    Leider nein, da das Modul nie im großen Stil zum Einsatz kam gab es bisher auch keine weiteren Arbeiten daran.

  30. Kai sagt:

    Tolle Idee. Jetzt habe ich extra dafür auch PHP5 am laufen, ABER:

    Ich steh aufn Schlauch, wollte eigentlich Bestelldaten für Execel oder so exportieren: Name, Bestellnr, Bestelldatum, Bestellerland, netto, MwSt., Brutto

    Letzte drei Felder kann man ja nicht so einfach aus den Tabellen auswählen..

    Geht das überhaupt mit dem Export-Modul?

  31. Mario sagt:

    Hi, bekomme nach dem hochladen und aufrufen der php Adresse nur eine weiße Seite….Kennt jemand den Fehler?

  32. IT sagt:

    @Kai: Geht alles, das Modul muß aber dafür angepasst werden. Ich glaube diese Daten stehen sogar in der Datenbank.

    @Mario: Schonmal mit Firefox getestet? Was sagt die Apache Logdatei?

  33. Mario sagt:

    Ja bin nur mit dem Firefox unterwegs…auch schon andere Browser getestet. In den Logfiles stehen eine Millionen Urls drin 🙂 wüsste nicht wo ich da gucken soll

  34. IT sagt:

    Hi, aus dem Stehgreif keine Ahnung woran’s liegt, und leider auch keine Installation wo ich’s debuggen könnte momentan. Am Besten suchen und mir sagen damit ich den Fehler beheben kann 😉

  35. Manuel sagt:

    Ich habe noch einmal eine Frage. habe die letzte Version installiert. Export „offene Bestellungen“ klappt wunderbar. Export „offene + versendet“ geht nur teilweise. Der Status wird geändert – aber in der xml sind dann keine exportierten Daten drin…

    woran könnte das liegen? Ansonsten keine Fehlermeldungen, nix. Meckert nirgends :))

  36. Manuel sagt:

    Entwarnung. Ich hatte vergessen, dass man ja im anderen Status auch wieder die „Häkchen“ setzen muss – sonst exportiert er natürlich nix 🙂

  37. Martin sagt:

    Geniales Tool! Funktioniert super. Gibt es eine Möglichkeit den Export auch direkt zu starten ? Also einfach Adresse ./exanto_export.php?action=export_to_file aufrufen und der Export passiert ohne weitere Eingabe mit einem festen Regelsatz ?

  38. Ingo sagt:

    Hi Martin, momentan wird das Rechtesystem von xt:Commerce genutzt um den Zugriff zu gewähren, das ließe sich natürlich auch anders realisieren. Von Haus aus geht das aber in der aktuellen Version nicht.

  39. Martin sagt:

    Danke Ingo für die schnelle Anwort. Habe es grad hin bekommen allerdings muß man wirklich in das Rechtesystem eingreifen. Ist aber mit 2 Zeilen Code zu lösen. Danke für den Tip!

  40. Chris sagt:

    Hi, ich benutze den export auch und es ist wirklich sehr komfortabel, bekomme es aber leider nicht hin, dass er alle Bestellungen mit status „offen“ UND „In Bearbeiung“ exportiert, bin mir über die syntax nicht im klaren, welche hinter $relations[„ob“]->condition = “ orders_status = ‚1‘ “ bzw. in die klammern muss, kann mir jemand helfen?

  41. Ingo sagt:

    Hi Chris, das in den Klammern ist ganz einfach SQL-Syntax. Also kannst du einfach statt orders_status = '1' diesen hier nehmen: orders_status = '1' OR orders_status = '$x', wobei du $x natürlich durch die Zahl ersetzen musst die dem „In Bearbeitung“ Status deines Shopsystems entspricht.

    • Chris sagt:

      Hey Ingo, vielen Dank, das Problem war die genaue syntax mit „OR“ da ich leider von SQL keine Ahnung habe und daher auch die entsprechende OR Verknüpfung nicht kannte, dachte es müsste etwas mit AND sein…

  42. Chris sagt:

    …was natürlich keinen Sinn macht, wenn ich mal genauer drüber nachdenke…

  43. Dennis sagt:

    Ist es eigentlich auch möglich nur Artikel-Daten (Artikel inkl Variationen) zu exportieren?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.