Datenübernahme vom alten xt:Commerce Shop (Gambio, modified, etc.)

  • In der aktuellen Version werden alle Shop Zuweisungen über die Tabelle

    SQL
    1. object_to_store

    zugewiesen, dabei ist

    SQL
    1. object_id

    => products_id oder categories_id

    SQL
    1. object_type_id

    => die passende ID aus object_type

    SQL
    1. store_n

    => die jeweilige Zuweisung mittels 1/0
    siehe auch: Wiki: object_to_store

  • okay, das bedeutet also, ich importiere die "alte" db per phpmyadmin-import in die leere hhg multistore-db und ändere dann die entsprechenden werte manuell?

  • Du änderst nichts, Du machst pro Datensatz einen Insert in die Tabelle mit den Werten, ala

    SQL
    1. INSERT INTO object_to_store ('object_id', 'object_type_id', 'store_1') VALUES ('products_id_von_products', 'ID_von_object_type', '1');


    das würde dann pratisch so lauten

    SQL
    1. INSERT INTO object_to_store ('object_id', 'object_type_id', 'store_1') SELECT products_id AS object_id, 14 AS object_type_id, 1 AS store_1 FROM products;
  • ich habe die xt-db importiert und dann auf der obersten ebene der datenbank den von dir angegebenen befehl ausgeführt.


    fehlermeldung:


    Quote

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''object_id', 'object_type_id', 'store_1') SELECT products_id, 14 AS object_type_' at line 1




    was genau meintest du mit "pro datensatz"? datensatz des jeweiligen shops?


    vielleicht habe ich den befehl auch an der falschen stelle eingegeben...?

  • Habs oben mal ausgebessert. Du musst für Produkte und Kategorien pro Shop den Du übernimmst diesen ausführen.

    SQL
    1. object_type_id

    ist für Kategorien

    Quote

    4

  • Guten Morgen!


    Ich versuche mit xtc2hgms Daten aus einer xtc Datenbank in die SBE Version zu importieren. ( ca 8000 Produktdatensätze )


    Habe dabei folgendes Problem:


    Das Script stopt nach der Meldung -> Starting product conversion
    jedoch ohne einen Fehler anzuzeigen.


    DB Debug ist eingeschaltet
    PHP Fehler Meldungen werden angezeigt.


    Der Datensatz aus der alten DB -> products wird geladen.
    Wenn ich die schleife mit einem Zähler durchlaufen lassen ohne die


    @hhg_db_perform(TABLE_PRODUCTS, $products->fields, 'insert');
    @hhg_db_query("update ".TABLE_PRODUCTS." set products_owner='1'");
    @hhg_db_query("Insert into ".TABLE_MS_PRODUCTS_TO_STORE." (products_id, store_1) values ('".$products->fields['products_id']."', '1')");


    auszuführen läuft es alle 8000 Datensätze durch.


    Ein Debug des Arrays $products gibt mir



    Ich wollte mir die Funktion hhg_db_perform() ansehen aber leider finde ich diese in der SBE Version nicht, bekomme aber auch keine Fehlermeldung das es die Funktion nicht gibt.


    Bitte um Hinweise bzw. Hilfestellung


    mfg
    Haas Christian

  • Hallo HCDesign,


    in der neusten Version 4.2 wurden die Befehle:

    PHP
    1. hhg_db_perform(


    und

    PHP
    1. hhg_db_query(


    ersetzt durch:

    PHP
    1. $this->registry['db']->perform(


    bzw.

    PHP
    1. $this->registry['db']->query(


    wobei $registry definiert werden muß (siehe andere Dateien des Shops).


    Ich denke das ist das Grundproblem oder aber Du hast eine ältere SBE Version. Dort sollte hhg_db_query keine Probleme machen. :)


    Viele Grüße


    Franky

  • Hm wird die Datenbank Klasse nicht in der application_top gestartet.. die wird ja in der xtc2hhgms eingebunden.


    Bekomme da aber immer fehlermeldungen.


    Steh grad ein bissler am Schlauch mit dem definieren der $registry im Script.


    Danke schon im vorhinein für die Hilfe

  • Hallo HCDesign,


    schau mal in die Klasse admin/core/classes/class.import.php
    Dort wird schon am Anfang alles dafür definiert:


    PHP
    1. class import
    2. {
    3. private $registry;
    4. function __construct($filename, $registry)
    5. {
    6. $this->registry = $registry;


    Das bräuchtest Du dann auch für Dein Skript. :)


    Viele Grüße


    Franky

  • Hallo nochmal


    Ich kann jetzt mit der DB kommunizieren bekomme aber folgende Fehlermeldung:


    Code
    1. Warning: mysql_query(): 76 is not a valid MySQL-Link resource in C:\AppServ\www\zarubashopneu\external\adodb\drivers\adodb-mysql.inc.php on line 438
    2. :
    3. ADOConnection._Execute(INSERT INTO products (products_id, products_quantity, products_shippingtime, products_model, products_sort, products_price, prod..., false) % line 862, file: adodb.inc.php
    4. ADOConnection.Execute(INSERT INTO products (products_id, products_quantity, products_shippingtime, products_model, products_sort, products_price, prod...) % line 153, file: class.hhg_db.php
    5. hhg_db.query(INSERT INTO products (products_id, products_quantity, products_shippingtime, products_model, products_sort, products_price, prod...) % line 129, file: class.hhg_db.php
    6. hhg_db.perform(products, Array[23], insert) % line 59, file:


    davor sehe ich das query das ausgeführt wird:


    Code
    1. (mysql): INSERT INTO products (products_id, products_quantity, products_shippingtime, products_model, products_sort, products_price, products_discount_allowed, products_date_added, products_weight, products_status, products_tax_class_id, product_template, manufacturers_id, products_ordered, products_fsk18, products_vpe, products_vpe_status, products_vpe_value, products_startpage, products_startpage_sort) VALUES (5811, 500, 1, '0142344 ', '0', '16.5000', '0.00', '0000-00-00 00:00:00', '0.00', 1, 1, 'default', '0', 7, '0', '0', '0', '0.0000', '0', '0')


    Wenn ich das direkt in phpmyadmin ausführe wird der Datensatz in die Tabelle eingefügt.


    Bin momentan wirklich ratlos....


    Kann es daran liegen das ich das Einfügen wie folgt aufrufe:

    Code
    1. $update_prod = $registry['db']->perform(TABLE_PRODUCTS, $products->fields, 'insert');


    Danke im Voraus

  • Hallo HCDesign,


    lasse Dir mal vor dem insert die products->fields ausgeben mit:

    PHP
    1. print_r($products->fields);


    und schaue mal ob alles was drin steht auch korrekt ist.


    Rufe den Befehl ansonsten einfach mal so auf:

    PHP
    1. $registry['db']->perform(TABLE_PRODUCTS, $products->fields);


    ohne das:

    PHP
    1. $update_prod =


    Das 'insert' braucht auch nicht da es der Default Wert ist!


    Viele Grüße


    Franky

  • hm ok das Script nimmt 3 Felder der original Datenbank nicht und zwar solche die als NULL definiert sind und auch leer sind.


    Daher werden sie auch als leer ausgelassen und in classe in der function perform nicht berücksichtigt.


    Code
    1. if ($value !== "") {
    2. switch ($value) {


    Soll ich die leeren Einträge mit null auffüllen?

  • Hallo HCDesign,


    entweder das oder Du musst das

    PHP
    1. products->fields


    Array kontrollieren und die Felder die leer sind komplett weglassen.
    Würde dann ja auch mit einem foreach des Arrays funktionieren...


    Viele Grüße


    Franky

  • hallo :) ,


    also, wenn ich die daten von meinem alten xtc shop einspielen will, muss ich dass modul ja updaten, und dass mache ich so:


    wo bekomme ich jetzt aber die aeltere multistore.sql her?


    gruss
    susanne

    love-made.dk
    design, kunsthåndværk og brugskunst lavet med kærlighed
    få din egen webbutik -gratis!
    www.love-made.dk

  • doch noch ne frage. :)
    die multistore.sql datei die ich habe, ist von einer ce version. brauche ich dann nicht eine fuer die ee version, damit ich auch alle tabellen habe? ich habe aber keine alte version. wo bekomme ich jetzt eine sql datei her?

    love-made.dk
    design, kunsthåndværk og brugskunst lavet med kærlighed
    få din egen webbutik -gratis!
    www.love-made.dk

  • nochmal ich.
    sorry, wenn ich hier gerade einen monolog halte.
    also, ich habe jetzt die xtc daten in eine alte ce version geladen. ich dachte ich mache das ganze mal scheibchenweise....


    Quote

    Conversion was successful!

    allerdings sind nur die kunden angelegt worden....ansonsten nichts...???

    love-made.dk
    design, kunsthåndværk og brugskunst lavet med kærlighed
    få din egen webbutik -gratis!
    www.love-made.dk

  • die multistore.sql datei die ich habe, ist von einer ce version. brauche ich dann nicht eine fuer die ee version, damit ich auch alle tabellen habe? ich habe aber keine alte version. wo bekomme ich jetzt eine sql datei her?


    Es sind nur die Tabellen, die befüllt werden, die Du dann in Deine Installation später importierst. Deshalb spielt es eigentlich keine Rolle. Der Konverter wird nur Tabellen befüllen, die bei allen vorhanden sind.

    wenn ich 3 sprachen habe...muss ich dann im converter auch noch was anpassen?


    Nein die Datensätze werden ohne jegliche Logik übernommen.

    Conversion was successful!
    allerdings sind nur die kunden angelegt worden....ansonsten nichts...???


    Wenn er keine Daten findet, wird ers nicht übernehmen. Das kann z.T. durch fehlende Kundengruppen etc. dazu kommen.