diff xml/getAmazonInfo.php @ 19:84a412b8122c

try to protect against a range of missing info
author Charlie Root
date Thu, 30 Aug 2018 17:18:12 -0400
parents c41a5802b26c
children 46382face560
line wrap: on
line diff
--- a/xml/getAmazonInfo.php	Sun Jul 30 05:34:46 2017 -0400
+++ b/xml/getAmazonInfo.php	Thu Aug 30 17:18:12 2018 -0400
@@ -108,6 +108,9 @@
 		
 	/*$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><ItemLookupErrorResponse xmlns=\"http://ecs.amazonaws.com/doc/2009-03-31/\"><Error><Code>AccountLimitExceeded</Code><Message>Account limit of 2056 requests per hour exceeded.</Message></Error><RequestID>290ed059-730c-4789-93b4-6d21e11053d3</RequestID></ItemLookupErrorResponse>");*/
 	$review = "";
+	$review1 = "";
+	$review2 = "";
+	$review3 = "";
 	// HST added this
 	if (preg_match("<Error>",$output)) {
 	  $xml = new SimpleXMLElement($output);	
@@ -145,9 +148,6 @@
 	  // cause
 	  restore_error_handler();
 	  //echo $review;
-	  $review1 = "";
-	  $review2 = "";
-	  $review3 = "";
 	}
 	if ($review != "")
 	{
@@ -260,95 +260,107 @@
 	if($errorCode != "AccountLimitExceeded")
 	{
 	  if($go == 1) {
+	    $item = $xml->Items->Item[0];
+	    if ($item && $item->ItemAttributes && $item->ItemAttributes->Title) {
+	      $title = $item->ItemAttributes->Title; }
+	    else { $title = "[no title]"; };
 	    file_put_contents('/var/ywww/debug/phpDebug',"win: ".
-			    $xml->Items->Item->ItemAttributes->Title."\n",
+			    $title."\n",
 			      FILE_APPEND);
 			return $output;
 	  }
-		else
-		{
-			$title = $xml->Items->Item->ItemAttributes->Title;
-			$author = $xml->Items->Item->ItemAttributes->Author;
-			$binding = $xml->Items->Item->ItemAttributes->Binding;
-			$dewey = $xml->Items->Item->ItemAttributes->DeweyDecimalNumber;
-			if($dewey == "")
-				$dewey = "null";
-			$imageURL = $xml->Items->Item->MediumImage->URL;
-			$salesRank = $xml->Items->Item->SalesRank;
-			$pubDate = $xml->Items->Item->ItemAttributes->PublicationDate;
-			$publisher = $xml->Items->Item->ItemAttributes->Publisher;
-			
-			$genreID = "";
-			$genre = "";		
-			$genArr = array();
+	  else
+	    {
+	      if ($xml->Items->Item) {
+		$title = $xml->Items->Item[0]->ItemAttributes->Title;
+		$author = $xml->Items->Item[0]->ItemAttributes->Author;
+		$binding = $xml->Items->Item[0]->ItemAttributes->Binding;
+		$dewey = $xml->Items->Item[0]->ItemAttributes->DeweyDecimalNumber;
+		if($dewey == "")
+		  $dewey = "null";
+		$imageURL = $xml->Items->Item[0]->MediumImage->URL;
+		$salesRank = $xml->Items->Item[0]->SalesRank;
+		$pubDate = $xml->Items->Item[0]->ItemAttributes->PublicationDate;
+		$publisher = $xml->Items->Item[0]->ItemAttributes->Publisher;
+	      }
+	      else {
+		$title = $salesRank = "";
+		$dewey = "null";
+	      }
 			
-			for($i=0;$i<sizeof($xml->Items->Item->BrowseNodes->BrowseNode);$i++){					
-				//sexy recursive function
-				findGenre($xml->Items->Item->BrowseNodes->BrowseNode[$i], $genreID, $genre);
+	      $genreID = "";
+	      $genre = "";		
+	      $genArr = array();
+
+	      if ($xml->Items->Item[0] && $xml->Items->Item[0]->BrowseNodes) {
+		for($i=0;$i<sizeof($xml->Items->Item->BrowseNodes->BrowseNode);$i++){	
+		  //sexy recursive function
+		  findGenre($xml->Items->Item->BrowseNodes->BrowseNode[$i], $genreID, $genre);
 				
-				if($genre != "")
-					$genArr[strval($genreID)] = strval($genre);
-					//$genArr[$i] = array(strval($genreID) => strval($genre));
+		  if($genre != "")
+		    $genArr[strval($genreID)] = strval($genre);
+		  //$genArr[$i] = array(strval($genreID) => strval($genre));
 
-				//echo $genre;
-				//echo $genreID;
+		  //echo $genre;
+		  //echo $genreID;
 				
-				$genre = "";
-				$genreID = "";
-			}
+		  $genre = "";
+		  $genreID = "";
+		}
+	      }
 			
-			$g1 = "null";
-			$g2 = "null";
-			$g3 = "null";
-			$loop = 1;
+	      $g1 = "null";
+	      $g2 = "null";
+	      $g3 = "null";
+	      $loop = 1;
 			
-			foreach ($genArr as $key => $value) {
-				//echo "$key => $value";
-				$queryG = "CALL b_addBrowseNode($key,\"$value\")";	//add the name value pair for genre to new table	
-				//echo $queryG;
-				include "../../private/db.php";
-				$resG = mysqli_query($link, $queryG);
-				mysqli_close($link);
+	      foreach ($genArr as $key => $value) {
+		//echo "$key => $value";
+		$queryG = "CALL b_addBrowseNode($key,\"$value\")";	//add the name value pair for genre to new table	
+		//echo $queryG;
+		include "../../private/db.php";
+		$resG = mysqli_query($link, $queryG);
+		mysqli_close($link);
 				
-				switch ($loop) {
-				case 1:
-					$g1 = $key;
-					break;
-				case 2:
-					$g2 = $key;
-					break;
-				case 3:
-					$g3 = $key;
-					break;
-				}
+		switch ($loop) {
+		case 1:
+		  $g1 = $key;
+		  break;
+		case 2:
+		  $g2 = $key;
+		  break;
+		case 3:
+		  $g3 = $key;
+		  break;
+		}
 				
-				$loop++;
-			}
+		$loop++;
+	      }
 			
-			if($salesRank == "")
-				$salesRank = "null";
+	      if($salesRank == "")
+		$salesRank = "null";
 			
-			$title = strtr($title, '"', "'");
-			include "../../private/db.php";
-			$review1 = mysqli_real_escape_string($link,$review1);
-			$review2 = mysqli_real_escape_string($link,$review2);
-			$review3 = mysqli_real_escape_string($link,$review3);
+	      $title = strtr($title, '"', "'");
+	      include "../../private/db.php";
+	      $review1 = mysqli_real_escape_string($link,$review1);
+	      $review2 = mysqli_real_escape_string($link,$review2);
+	      $review3 = mysqli_real_escape_string($link,$review3);
 			
-			if($title != "")
-			{
-				$queryInsert = "CALL b_addNewBook(\"$searchparameterdata\",\"$title\", \"$author\",\"$binding\",\"$imageURL\", $dewey, $salesRank,\"$pubDate\",\"$publisher\",$g1,$g2,$g3,$loc)";	
-				//echo $queryInsert;
-				$queryInsertReviews = "CALL b_insertReviews(\"$searchparameterdata\",\"$review1\",\"$review2\",\"$review3\")";
+	      if($title != "")
+		{
+		  $queryInsert = "CALL b_addNewBook(\"$searchparameterdata\",\"$title\", \"$author\",\"$binding\",\"$imageURL\", $dewey, $salesRank,\"$pubDate\",\"$publisher\",$g1,$g2,$g3,$loc)";	
+		  //echo $queryInsert;
+		  $queryInsertReviews = "CALL b_insertReviews(\"$searchparameterdata\",\"$review1\",\"$review2\",\"$review3\")";
 				
-				$resG = mysqli_query($link, $queryInsert) or exit( mysqli_error( $link ));
-				if($review1 != "" && $review2 != "" && $review3 != "")
-					$resG = mysqli_query($link, $queryInsertReviews) or exit( mysqli_error( $link ));
+		  $resG = mysqli_query($link, $queryInsert) or exit( mysqli_error( $link ));
+		  if($review1 != "" && $review2 != "" && $review3 != "")
+		    $resG = mysqli_query($link, $queryInsertReviews) or exit( mysqli_error( $link ));
 					
-				mysqli_close($link);	//do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop		
-			}
+		  mysqli_close($link);	//do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop		
+		}
 
-			echo $output;
-		}
+	      echo $output;
+	    }
 	}
 	else
 	{