Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Probleme bei eigenem Import Script
 
Raphomee
Jr. Member
 
Total Posts:  4
Joined:  2009-02-04
 

Hallo,

Vorab: Genutzt Magento Version: 1.3.0

ich versuche gerade Daten aus unserer Wawi in den Shop zu importieren. Dafür habe ich folgendes Script geschrieben.

Nun habe ich noch 2-3 Probleme wo ich hoffe hier Hilfe zu finden wink

1. Produktbilder werden nicht übernommen.
2. Ich weis leider nocht nicht wie ich alte Produktbilder lösche oder aktualisiere
3. Beim ersten Aufruf des Scripts erhalte ich keine Fehlermeldung und alle Produkte werden eingetragen (bis auf die Bilder) beim 2ten Aufruf wo die Produkte aktualisiert werden sollten erhalte ich folgende Fehlermeldung:

Fatal error:  Uncaught exception 'Exception' with message 'Warning: Invalid argument supplied for foreach()  in /home/shop_de/www/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 937' in /home/shop_de/www/app/code/core/Mage/Core/functions.php:246
Stack trace
:
#0 /home/shop_de/www/app/code/core/Mage/Eav/Model/Entity/Abstract.php(937): mageCoreErrorHandler(2, 'Invalid argumen...', '/home/jungborn_...', 937, Array)
#1 /home/shop_de/www/app/code/core/Mage/Eav/Model/Entity/Abstract.php(892): Mage_Eav_Model_Entity_Abstract->_collectSaveData(Object(Mage_Catalog_Model_Product))
#2 /home/shop_de/www/app/code/core/Mage/Core/Model/Abstract.php(251): Mage_Eav_Model_Entity_Abstract->save(Object(Mage_Catalog_Model_Product))
#3 /home/shop_de/www/import/index.php(191): Mage_Core_Model_Abstract->save()
#4 {main}
  
thrown in <b>/home/shop_de/www/app/code/core/Mage/Core/functions.php</bon line <b>246</b><br />

Hier mein Script:

<?php
### get Magento Mage Class
define('MAGENTO'realpath("../"));
require_once 
MAGENTO ."/app/Mage.php";

Mage::App();

{ hier kommt der Part wo ich unsere CSV auslese und verarbeiteden habe ich rausgelassen da der ja nicht wirklich relevant ist }

foreach($products_array as $key => $data{
 
### Create Magento Product
 
$product Mage::getModel('catalog/product');

 
$select "SELECT `entity_id`
        FROM `catalog_product_entity`
        WHERE `sku` = '"
$key ."'";
 
$query $db->query($select);
 if(
$res $db->result($query)) {
  $is_update 
true;
  
$product->load($res->entity_id);
 
else {
  $is_update 
false;
 
}

 $product
->setWebsiteIds(Array(1));
 
$product->setAttributeSetId(4);
 
$product->setSku($key);
 
$product->setTypeId('simple');
 
$product->setName($data["name"]);
 
$product->setDescription($data["descr"]);
 
$product->setShortDescription($data["descr"]);
 if(
$data["streichpreis"$data["price"]{
  $product
->setData("special_price"$data["price"]);
  
$product->setPrice($data["streichpreis"]);
 
else {
  $product
->setPrice($data["price"]);
 
}
 $product
->setStatus(1);
 
$product->setWeight(0);
 
$product->setTaxClassId('Taxable Goods');
 
$product->setCategoryIds($data["category_ids"]);

 
### Create Magento Image
 
if(isset($data["image_name"]) && trim($data["image_name"]) != ""{
  
if($is_update !== false || $product->getMediaGalleryImages()->count() == 0{
   $source       
"/home/shop_de/www/import/upload/images/gross/"$data["image_name"];
   
$destination  "/home/shop_de/www/media/import/"$data["image_name"];

   if(
file_exists($source)) {
    copy
($source$destination);
    
chmod($destination0777);

    
$visibility = Array (  'thumbnail',
              
'small_image',
               
'image');
    
$product->addImageToMediaGallery(MAGENTO ."/media/import/"$data["image_name"]$visibilitytruefalse);
   
else {
    
echo "File "$source ." nicht vorhanden<br />";
   
}
  } 
else {
   
### Update Magento Image
  
}
 } 
else {
  
echo "Bilddatei nicht in CSV vorhanden";
 
}

 
### Save the Product
 
$product->save();
?>
 
Magento Community Magento Community
Magento Community
Magento Community
 
timste
Guru
 
Total Posts:  645
Joined:  2007-12-26
Leipzig
 

mal ne frage:

warum so umständlich?

über die API geht das nebst bildern auch, ist gut dokumentiert etc.?

gruss

 
Magento Community Magento Community
Magento Community
Magento Community
 
mago
Jr. Member
 
Avatar
Total Posts:  25
Joined:  2009-03-29
Germany
 

Ja, aber das Script nutzt doch die API?

Oder meinst Du das SOAP-Interface?

Gruß, mago

 
Magento Community Magento Community
Magento Community
Magento Community
 
Raphomee
Jr. Member
 
Total Posts:  4
Joined:  2009-02-04
 

Nungut, die Soap-API könnte man natürlich auch nutzen, wobei ich dachte das es evtl. auch für meinen Ansatz eine Lösung gibt, aber dann schaue ich mir die SOAP-API mal an.

 
Magento Community Magento Community
Magento Community
Magento Community
 
blakew
Sr. Member
 
Total Posts:  107
Joined:  2008-06-20
 

Check out this forum:

http://www.magentocommerce.com/boards/viewthread/8542/P45/

 
Magento Community Magento Community
Magento Community
Magento Community
 
mageconsult
Jr. Member
 
Total Posts:  11
Joined:  2009-03-12
Germany, Rheine
 
timste - 31 March 2009 08:23 AM

mal ne frage:

warum so umständlich?

über die API geht das nebst bildern auch, ist gut dokumentiert etc.?

gruss

Die API ist leider sehr, sehr, sehr langsam und kann längst nicht alles. Was mach ich mit Attributfeldern wie Hersteller, die als Dropdown angelegt werden müssen und denen man eine ID zuordnet. Das geht nicht per API.

Ich selber habe einen kompletten Import inkl. Update von Artikeln, Kategorien, Bildern und der Zuordnung von Gruppen und Einzelbildern geschrieben. Die API-Calls werden sogar mit Zend_Cache gecacht, aber das dauert immer noch ewig.

Deshalb suche ich jetzt auch den direkten Weg, entweder direkt in die MySQL-Tables oder über Mage-Models. Der Ansatz oben gefällt mir schon ganz gut.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top