I had a whale of a time trying to get some data posted onto Google Base, to enable the shop to sell items from Google Products. Although I am sure that popular e-commerce packages, and probably CMSs, all have uploader modules/components/plugins to do this for you, it is difficult trying to do a bulk export with xml so here is a quickie I wrote to help with getting the correct syntax for Google base using PHP’s XMLWriter tool:
<?php
// THIS IS ABSOLUTELY ESSENTIAL - DO NOT FORGET TO SET THIS
@date_default_timezone_set("GMT");
$writer = new XMLWriter();
// Output directly to the user
$writer->openURI('php://output');
$writer->startDocument('1.0', 'UTF-8');
$writer->setIndent(4);
// declare it as an rss document that conforms to the Google Base specifications
$writer->startElement('rss');
$writer->writeAttribute('version', '2.0');
$writer->writeAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
$writer->startElement("channel");
//---------------------------------------------------- replace these with you details
//$writer->writeElement('ttl', '0');
$writer->writeElement('title', 'MyCompany');
$writer->writeElement('description', 'MyCompany sells things');
$writer->writeElement('link', 'http://www.mycompany.com');
//----------------------------------------------------
//Open database connection
$dbhost = 'localhost';
$dbuser = 'username';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'my_company_shop';
mysql_select_db($dbname) or die ('Error connection to database');
//Call Products from database
$productSql = 'select * from products';
$product = mysql_query($productSql);
//----------------------------------------------------
while($products = mysql_fetch_array($product)){
$writer->startElement('item');
$writer->writeElement('title', $productName['products_name']);
$writer->writeElement('g:model', $products['products_model']);
$writer->writeElement('g:department', $productToCategoriesSetName['categories_name']);
$writer->writeElement('description', $product['products_description']);
$writer->writeElement('g:price', $products['products_price']);
$writer->writeElement('g:image_link', 'http://shop.mycompany.com/images/'.$products['products_image']);
\\ this is dependant on how you link to your products
$writer->writeElement('link', 'http://shop.mycompany.com/product_info.php?product_id='.$products['products_id']);
$writer->writeElement('g:condition', 'new'); \\either it is new or used, normally i would guess things are new
$writer->writeElement('g:id', $products['products_id']);
// End Item
$writer->endElement();
}
//----------------------------------------------------
// End channel
$writer->endElement();
// End rss
$writer->endElement();
$writer->endDocument();
$writer->flush();
Have fun, and contribute to Google base so next time I want your product I can find it!
Connect on LinkedIn. Follow me on Twitter. Grab the RSS Feed