My friend recently created a magento web store. He wants to have several thousand products in his store and asked the manufacturer to give him some data that he could just import into purple. The manufacturer said that he does not own something like this or does not want to give it out (I'm not 100% sure about this). But he was allowed to use all the product information on his website to complete his online store. So I wrote a webcrawler that captures all the information. After a little research, people told me not to embed all the information using SQL, but rather to use a PHP script and Magento API.
I have some problems with the following script. He must create a product to add to the Magento database. Insertion values ββare test values.
<?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 1); require("app/Mage.php"); echo "Test \n"; Mage::init(); $product = Mage::getModel('catalog/product'); $product->setName('Peter Parker'); $product->setDescription('Peter Parker Description'); $stock_data=array( 'use_config_manage_stock' => 0, 'qty' => 0, 'min_qty' => 0, 'use_config_min_qty'=>0, 'min_sale_qty' => 1, 'use_config_min_sale_qty'=>1, 'max_sale_qty' => 9999, 'use_config_max_sale_qty'=>1, 'is_qty_decimal' => 0, 'backorders' => 0, 'notify_stock_qty' => 0, 'is_in_stock' => 0 ); $product->setData('stock_data',$stock_data); $product->setTaxClassId(2); // default tax class $product->setAttributeSetId(9); //9 is for default $product->setWebsiteIds(array(1)); $product->setCategoryIds(array(9)); $product->setStatus(1);//1=Enabled; 2=Disabled; $product->setVisibility(4);//4 = catalog & search. $image_name = 'blabla.JPEG'; $url = 'http://www.rasch-tapeten.de/shop/media/catalog/product/cache/1/image/bf8bb7ab75fe41b467eed88aa79f7917/1/3/133806.JPEG'; $img = 'media/'.$image_name; echo $img."\n"; function save_image($inPath,$outPath){ //Download images from remote server $in= fopen($inPath, "rb"); $out= fopen($outPath, "wb"); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } save_image($url, $img); try { $product->addImageToMediaGallery($img, array('image', 'small_image', 'thumbnail'), false, false); }catch(Mage_Core_Exception $e) { echo $e->getMessage(); } try { $product->save(); }catch(Exception $e) { echo $e->getMessage(); } ?>
Well, if I execute it, it throws the following exception:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`magento`.`catalog_product_entity`, CONSTRAINT `FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID` FOREIGN KEY (`attribute_set_id`) REFERENCES `eav_attribute_set` (`attribute_set_id`) ON DE)
Does anyone know what I did wrong?