Magento Forum

   
Page 2 of 2
Produkt API Fehler, wo ist da der Wurm drin? 
 
Rico Winter
Sr. Member
 
Avatar
Total Posts:  108
Joined:  2009-03-20
Leipzig
 
ZeOner - 26 March 2009 12:15 AM

du must beim export in csv um deine strings quotes fassen und in den strings dann vorhandene quotes escapen!
die sehen dann so aus: \”

und nach jedem produkt ein \n für zeilen umbruch einfügen.
dann solltest du soviele zeilen wie produkte in der csv datei haben.

mfg

ZeOner

Ich hab leider keine Ahnung wie du das meinst smile Bin aber zu dem entschluss gekommen, es nochmals mittels xml zu versuchen… Ich hab im Ansatz schon rausgefunden, wie ich mit dem xmlReader die daten bekomme, die ich brauche, diese muss ich jetzt nur noch gruppieren, sodass der die für jeden Artikel einzeln beschreibt…

while($xml->read())
{
    
    
if($xml->nodeType == XMLReader::ELEMENT || $xml->nodeType == XMLReader::TEXT)
    
{
            
if ($xml->nodeType == XMLReader::ELEMENT)
            
{
                $name 
$xml->name;
            
}
            
else
            
{
                $value 
$xml->value;
            
}
    }    
}

Das setzt die Artikel Eigenschaft mehr oder weniger zusammen, nur halt in der Form eines Artikels… Irgendwo muss ich den jetzt noch anweisen (entweder durch $name = ‘ShopNumber’ (was das erste Element eines neuen Artikels wäre) oder durch einen Index (das wäre dann aller 33 Elemente) einen neuen Artikel anzulegen und dessen Attribute dann zu speichern, bevor ich alles in die DB schreiben kann… Das Haken bei der Sache ist, das die Vorgegebene XML keine Attribute enthält und ich nur mittels ELEMENT oder TEXT (s.o.) auslesen kann… Darum hat der ganze Spaß auch nicht mit simple xml funktioniert… -> ich bekomm nur ein Artikel wo sich die Eigenschaften entweder überschreiben oder je nach Anzahl der Artikel redundant für einen Artikel eingetragen werden… Meine 1000 Lösungsversuche die ich allein in den letzten 2 Stunden versuch habe, sind alle kläglich gescheitert… das ist aber in sofern kein Magento Problem mehr, sondern liegt eher an meinen PHP Kenntnissen… shut eye

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rico Winter
Sr. Member
 
Avatar
Total Posts:  108
Joined:  2009-03-20
Leipzig
 

Ich gebs auf… Ich schaffs weder die csv, noch die xml einzulesen, bzw. zu verarbeiten… Ich weiß einfach nicht wo ich ansetzen soll… Der Aufbau der xml ermöglicht mir es einfach nicht, die passenden Werte zu ermitteln.

Falls mir jemand helfen möchte, kann er das gern tun, dafür lad ich die xml Datei mal hoch…

Ich bin mit meinem Latein am Ende....

Danke nochmal an timste, dass ich wenigstens jetzt weiß, wie die Api zu handeln ist smile

Gruß Rico

File Attachments
data.xml  (File Size: 2704KB - Downloads: 1192)
 
Magento Community Magento Community
Magento Community
Magento Community
 
PHOENIX
Guru
 
Avatar
Total Posts:  549
Joined:  2007-12-19
Stuttgart, Germany
 

Hast du es schon mal mit SimpleXML versucht? Damit kann man XML-Dateien - vorausgesetzt sie sind valide - mit einfachen Schleifen durchlaufen. Mehr zu SimpleXML findest du in der PHP-Doku.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rico Winter
Sr. Member
 
Avatar
Total Posts:  108
Joined:  2009-03-20
Leipzig
 
Phoenix - 26 March 2009 05:38 AM

Hast du es schon mal mit SimpleXML versucht? Damit kann man XML-Dateien - vorausgesetzt sie sind valide - mit einfachen Schleifen durchlaufen. Mehr zu SimpleXML findest du in der PHP-Doku.

Jupp, hab ich auch schon versucht, da die XML aber alles als Element führt und nicht als Attribut bin ich damit auch gescheitert, als letzte Möglichkeit würde mir nur DOM bleiben, aber da ziehts mir schon am Anfang die Schuhe aus, weils zu komplex ist…

 
Magento Community Magento Community
Magento Community
Magento Community
 
timste
Guru
 
Total Posts:  645
Joined:  2007-12-26
Leipzig
 

hallo

ich habe auch ne XML mit über 6000 Produkten, die ist knapp 8MB gross (oder klein wie man es nimmt).
ich arbeite mit DOM und gehe der reihe nach durch.
bei bedarf kann ich dir ein snippet posten damit du einen ansatz hast

gruss

 
Magento Community Magento Community
Magento Community
Magento Community
 
PHOENIX
Guru
 
Avatar
Total Posts:  549
Joined:  2007-12-19
Stuttgart, Germany
 

Ich sehe das Problem nicht, gerade als Element ist das doch easy:

$xml simplexml_load_file('data.xml');

foreach (
$xml->Articles->children() as $article{
    
echo 'ShopNumber: '.$article->ShopNumber;
    echo 
'Number: '.$article->Number;
    ...
}

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rico Winter
Sr. Member
 
Avatar
Total Posts:  108
Joined:  2009-03-20
Leipzig
 
Phoenix - 26 March 2009 06:02 AM

Ich sehe das Problem nicht, gerade als Element ist das doch easy:

$xml simplexml_load_file('data.xml');

foreach (
$xml->Articles->children(as $article{
    
echo 'ShopNumber: '.$article->ShopNumber;
    echo 
'Number: '.$article->Number;
    ...
}

Vielen Dank, das bringt mich in der Tat weiter, ich wusste nicht, dass es möglich ist, auch vor dem as ($xml->Articles->children() as $article)
die Childs zu instanzieren (hab das mit 3-4 verschachtelten foreach’s versucht smile )

Zwar gehts jetzt immer noch nicht, aber ich komm der Lösung langsam näher *freu*

Ich hab jetzt Folgendes

foreach ($sx->Articles->children() as $article)
{
        $newProductData 
= array();                
        
$SKU $value $article->Number
        
$newProductData['store'$article->ShopNumber;
        
$newProductData['name'$article->Description;
        
$newProductData['short_description'$article->Extension;
        
$newProductData['weight'$article->Weight;
        
$newProductData['price'$article->FreeField8;
        try
        
{
            $result
$client->call($sess_id'product.create', array('simple'1$SKU$newProductData));
        
}
        
catch (Exception $e
        
{
              
echo "Error: ".$e->getMessage().NL;
              
print_r($newProductData);
              exit();
        
}

}

Leider schreibt er aber die Childs jedesmal extra…

[store] => SimpleXMLElement Object ( [0] => 0 ) [name] => SimpleXMLElement Object ( [0] => Absaugkanüle bambino )

Sollte doch aber lieber so machen

[store] => 0 [name] => Absaugkanüle bambino

Sieht ja auch viel schöner aus smile

 
Magento Community Magento Community
Magento Community
Magento Community
 
PHOENIX
Guru
 
Avatar
Total Posts:  549
Joined:  2007-12-19
Stuttgart, Germany
 

Das ist einfach, du musst nur die Typ-Konvertierung in PHP erzwingen:

$code = (string)$xml->myCode

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rico Winter
Sr. Member
 
Avatar
Total Posts:  108
Joined:  2009-03-20
Leipzig
 
Phoenix - 26 March 2009 07:23 AM

Das ist einfach, du musst nur die Typ-Konvertierung in PHP erzwingen:

$code = (string)$xml->myCode

You made my day smile Nachdem ich den Cast als String gemacht habe funzt es smile
Er trägt zwar nur die Nummer ein und sämtliche anderen Details lässt er kurzerhand weg, aber es geht *nochmehr freu*

Danke nochmal an alle, für die tollen Tipps!

Mit diesen Worten mach ich für heute wieder erstmal Feierabend smile

Tschüssi

Gruß Rico

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top
Page 2 of 2