Blame | Letzte Änderung | Log anzeigen | RSS feed
<?php/** Copyright 2010-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.** Licensed under the Apache License, Version 2.0 (the "License").* You may not use this file except in compliance with the License.* A copy of the License is located at** http://aws.amazon.com/apache2.0** or in the "license" file accompanying this file. This file is distributed* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either* express or implied. See the License for the specific language governing* permissions and limitations under the License.*//*PREREQUISITES:In order to run this sample, I'll assume a few things:* You already have a valid Amazon Web Services developer account, and aresigned up to use Amazon SimpleDB <http://aws.amazon.com/simpledb>.* You already understand the fundamentals of object-oriented PHP.* You've verified that your PHP environment passes the SDK Compatibility Test.* You've already added your credentials to your config.inc.php file, as per theinstructions in the Getting Started Guide.TO RUN:* Run this file on your web server by loading it in your browser. It will generate HTML output.*//*%******************************************************************************************%*/// SETUP// Enable full-blown error reporting. http://twitter.com/rasmus/status/7448448829error_reporting(-1);// Set HTML headersheader("Content-type: text/html; charset=utf-8");// Include the SDKrequire_once '../sdk.class.php';/*%******************************************************************************************%*/// ADD DATA TO SIMPLEDB// Instantiate the AmazonSDB class$sdb = new AmazonSDB();// Store the name of the domain$domain = 'php-sdk-getting-started';// Create the domain$new_domain = $sdb->create_domain($domain);// Was the domain created successfully?if ($new_domain->isOK()){// Add a batch of item-key-values to your domain$add_attributes = $sdb->batch_put_attributes($domain, array('Item_01' => array('Category' => 'Clothes','Subcategory' => 'Sweater','Name' => 'Cathair Sweater','Color' => 'Siamese','Size' => array('Small', 'Medium', 'Large')),'Item_02' => array('Category' => 'Clothes','Subcategory' => 'Pants','Name' => 'Designer Jeans','Color' => 'Paisley Acid Wash','Size' => array('30x32', '32x32', '32x34')),'Item_03' => array('Category' => 'Clothes','Subcategory' => 'Pants','Name' => 'Sweatpants','Color' => array('Blue', 'Yellow', 'Pink'),'Size' => 'Large','Year' => array('2006', '2007')),'Item_04' => array('Category' => 'Car Parts','Subcategory' => 'Engine','Name' => 'Turbos','Make' => 'Audi','Model' => 'S4','Year' => array('2000', '2001', '2002')),'Item_05' => array('Category' => 'Car Parts','Subcategory' => 'Emissions','Name' => 'O2 Sensor','Make' => 'Audi','Model' => 'S4','Year' => array('2000', '2001', '2002')),));// Were the attributes added successfully?if ($add_attributes->isOK()){// Add an additional size to Item_01$append_attributes = $sdb->put_attributes($domain, 'Item_01', array('Size' => 'Extra Large'));// Were the new attributes appended successfully?if ($append_attributes->isOK()){// Use a SELECT expression to query the data.// Notice the use of backticks around the domain name.$results = $sdb->select("SELECT * FROM `{$domain}` WHERE Category = 'Clothes'");// Get all of the <Item> nodes in the response$items = $results->body->Item();// Re-structure the data so access is easier (see helper function below)$data = reorganize_data($items);// Generate <table> HTML from the data (see helper function below)$html = generate_html_table($data);}}}/*%******************************************************************************************%*/// HELPER FUNCTIONSfunction reorganize_data($items){// Collect rows and columns$rows = array();$columns = array();// Loop through each of the itemsforeach ($items as $item){// Let's append to a new row$row = array();$row['id'] = (string) $item->Name;// Loop through the item's attributesforeach ($item->Attribute as $attribute){// Store the column name$column_name = (string) $attribute->Name;// If it doesn't exist yet, create it.if (!isset($row[$column_name])){$row[$column_name] = array();}// Append the new value to any existing values// (Remember: Entries can have multiple values)$row[$column_name][] = (string) $attribute->Value;natcasesort($row[$column_name]);// If we've not yet collected this column name, add it.if (!in_array($column_name, $columns, true)){$columns[] = $column_name;}}// Append the row we created to the list of rows$rows[] = $row;}// Return bothreturn array('columns' => $columns,'rows' => $rows,);}function generate_html_table($data){// Retrieve row/column data$columns = $data['columns'];$rows = $data['rows'];// Generate shell of HTML table$output = '<table cellpadding="0" cellspacing="0" border="0">' . PHP_EOL;$output .= '<thead>';$output .= '<tr>';$output .= '<th></th>'; // Corner of the table headers// Add the table headersforeach ($columns as $column){$output .= '<th>' . $column . '</th>';}// Finish the <thead> tag$output .= '</tr>';$output .= '</thead>' . PHP_EOL;$output .= '<tbody>';// Loop through the rowsforeach ($rows as $row){// Display the item name as a header$output .= '<tr>' . PHP_EOL;$output .= '<th>' . $row['id'] . '</th>';// Pull out the data, in column orderforeach ($columns as $column){// If we have a value, concatenate the values into a string. Otherwise, nothing.$output .= '<td>' . (isset($row[$column]) ? implode(', ', $row[$column]) : '') . '</td>';}$output .= '</tr>' . PHP_EOL;}// Close out our table$output .= '</tbody>';$output .= '</table>';return $output;}?><!DOCTYPE html><html><head><meta http-equiv="Content-type" content="text/html; charset=utf-8"><title>sdb_create_domain_data</title><style type="text/css" media="screen">body {margin: 0;padding: 0;font: 14px/1.5em "Helvetica Neue", "Lucida Grande", Verdana, Arial, sans;background-color: #fff;color: #333;}table {margin: 50px auto 0 auto;padding: 0;border-collapse: collapse;}table th {background-color: #eee;}table td,table th {padding: 5px 10px;border: 1px solid #eee;}table td {border: 1px solid #ccc;}</style></head><body><!-- Display HTML table --><?php echo $html; ?></body></html>