Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

geocoding

By: daviestrachan on Mar 19th, 2013  |  syntax: PHP  |  size: 2.52 KB  |  views: 55  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. require("dbinfo.php");
  2. //Connect to database
  3. $dbh = new PDO("mysql:host=$host;dbname=$database", $username, $password);
  4. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5. try {
  6.     //Prepare query
  7.     $name = "%".$company."%";//Wildcard for PDO paramerter
  8.     $countSql = "SELECT COUNT(*) FROM markers WHERE `name` LIKE ?";
  9.     $countStmt = $dbh->prepare($countSql);
  10.     // Assign parameter
  11.     $countStmt->bindParam(1,$name);
  12.     //Execute query
  13.     $countStmt->execute();  
  14.     // check the row count  
  15.     if ($countStmt->fetchColumn() == 0) { #1
  16.        echo "No row matched the query.";
  17.         $q =$address.','.$city.','.$post_code;//Add .',UK'; for UK but inserts a lat & lng even if no address or postcode
  18.         echo "\n";
  19.                 $base_url = "http://maps.googleapis.com/maps/api/geocode/xml?address=";
  20.         $request_url = $base_url.urlencode($q)."&sensor=false";
  21.         $xml = simplexml_load_file($request_url) or die("url not loading");
  22.         if($xml->status=="OK"){#2
  23.            // Successful geocode
  24.             $lat = $xml->result->geometry->location->lat;
  25.             $lng = $xml->result->geometry->location->lng;
  26.                         $flag = 1;
  27.         } #2
  28.        else if($xml->status=="ZERO_RESULTS"){#3
  29.                     //Zero Results
  30.             $lat = 0;
  31.                         $lng = 0;
  32.                         $flag = 1;
  33.         }#3
  34.                  else if($xml->status=="OVER_QUERY_LIMIT"){#4
  35.                       echo "OVER_QUERY_LIMIT";
  36.                           $flag = 0;
  37.                          //Do something
  38.                          
  39.                  }#4
  40.                  else if($xml->status=="REQUEST_DENIED"){#5
  41.                       echo "REQUEST DENIED";
  42.                           $flag = 0;
  43.                          //Do something
  44.                 }#5    
  45.                 else if($xml->status=="REQUEST_DENIED"){#6
  46.                       echo "REQUEST DENIED";
  47.                           $flag = 0;
  48.                          //Do something
  49.                 }#6    
  50.  
  51.                
  52.                  if($flag == 1){#7
  53.                         $insertSql ="INSERT INTO markers (`name`, `address`, `lat`, `lng`, `type`, `link`) VALUES (?,?,?,?,?,?)";
  54.                         $insertStmt = $dbh->prepare($insertSql);
  55.                         // Assign parameter
  56.                         $insertStmt->bindParam(1,$company);
  57.                         $insertStmt->bindParam(2,$address);
  58.                         $insertStmt->bindParam(3,$lat);
  59.                         $insertStmt->bindParam(4,$lng);
  60.                         $insertStmt->bindParam(5,$type);
  61.                         $insertStmt->bindParam(6,$link);
  62.                         //Execute query
  63.                 $insertStmt->execute();
  64.                 }#7
  65.                
  66.     } #1
  67.    else {#1
  68.    echo "Row matched the query.";  
  69.     } #1
  70.        
  71.        
  72.        
  73.        
  74.        
  75. }// End try
  76.  
  77.  
  78. catch(PDOException $e) {
  79.     echo "I'm sorry I'm afraid you can't do that.". $e->getMessage() ;// Remove or modify after testing
  80.     file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]').", myFile.php, ". $e->getMessage()."\r\n", FILE_APPEND);  
  81.  }