Create a Product from PHP - Magento

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 &amp; 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?

+1
source share
3 answers
 $product->setAttributeSetId(9); //9 is for default 

Are you sure the default is 9?

In our product import method, this is what we did:

 protected $defaultAttributeSetId; // Default attribute set private function getDefaultAttributeSetId() { if (!isset($this->defaultAttributeSetId)) { $categoryModel = Mage::getModel("catalog/category"); $this->defaultAttributeSetId = $categoryModel->getDefaultAttributeSetId(); } return $this->defaultAttributeSetId; } ... ->setAttributeSetId($this->getDefaultAttributeSetId()) ... 
+2
source

Using this script, you can create a product using a PHP script

  $product = Mage::getModel('catalog/product'); $product->setSku("ABC123"); $product->setName("Type 7 Widget"); $product->setDescription("This widget will give you years of trouble-free widgeting."); $product->setShortDescription("High-end widget."); $product->setPrice(70.50); $product->setTypeId('simple'); $product->setAttributeSetId(9); // need to look this up $product->setCategoryIds("20,24"); // need to look these up $product->setWeight(1.0); $product->setTaxClassId(2); // taxable goods $product->setVisibility(4); // catalog, search $product->setStatus(1); // enabled // assign product to the default website $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); $product->save(); // for stock $stockData = $product->getStockData(); $stockData['qty'] = 10; $stockData['is_in_stock'] = 1; $stockData['manage_stock'] = 1; $stockData['use_config_manage_stock'] = 0; $product->setStockData($stockData); 
+2
source

this code for image gallery:

 $imagesdata = // import all images in array;<br> $getnumimages = sizeof($imagesdata);<br> for($i=0;$i<$getnumimages;$i++)<br> $product->addImageToMediaGallery ($imagesdata[$i], array('image','small_image','thumbnail'), false, false); 
0
source

All Articles