Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/09/2006, 11h42   #1
Invité de passage
 
Inscription : mars 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 7
Points : 2
Points : 2
Par défaut [SimpleXML] Google Maps, Problème d'encoding dans une boucle

Bonjour à tous,

Je tente d'intégrer à mon site d'immobilier des cartes Google Maps.

Avant de pouvoir intégrer ces éléments, je dois récupérer les coordonnées latitude et longitude par une requête http auprès de Google.

Pour cela, je me base sur le tuto suivant http://www.developer.com/db/article.php/10920_3621981_2

Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
<?php header ('Content-Type: text/html; charset=utf-8;');
 
	//Connexion a la base de donnees
 
	 $connexion = mysql_connect(HOST,USER,PASSWORD)
    or die ("Connexion au serveur impossible");
   $db=mysql_select_db(DATABASE,$connexion)
    or die ("S&eacute;lection de base de donn&eacute;es impossible");
 
   // Query the table
   $query = "SELECT idproduit, adresse, Ville, code_postal FROM immobilier WHERE idproduit=4559383";
   $result = mysql_query($query) or die(mysql_error());
 
 
   // Your Google Maps API key
   $key = "ABQIAAAAQRYU3XY6ckBbvEFxLG8M3RROpmEb267vUFb_KIzNC5a4iS4IlhSHKWVfRGG-mzuPYLzPf1oGofKiMA";
 
   // Loop through each row, submit HTTP request, output coordinates
   while (list($idproduit, $adresse, $Ville, $code_postal) = mysql_fetch_row($result))
   {
 
		  // Desired address
	  	$mapaddress = urlencode("$adresse $code_postal $Ville France");
 
      // Desired address
      $url = "http://maps.google.com/maps/geo?q=$mapaddress&output=xml&key=$key";
 
 
      // Retrieve the URL contents
      $page = file_get_contents($url);
 
      // Parse the returned XML file
      $xml = new SimpleXMLElement($page);
 
      // Parse the coordinate string
      list($longitude, $latitude, $altitude) = explode(",", $xml->Response->Placemark->Point->coordinates);
 
      // Output the coordinates
      echo "latitude: $latitude, longitude: $longitude <br />";
 
   }
?>

Ce code ne fonctionne pas et me renvoie le message d'erreur suivant :


Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE8 0x73 0x2C 0x20 in /home/immobiliD/www/test-google-map.php5 on line 32

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: 00</code><request>geocode</request></Status><Placemark><address>Avenue Jean Jaur in /home/immobiliD/www/test-google-map.php5 on line 32

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ^ in /home/immobiliD/www/test-google-map.php5 on line 32

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/immobiliD/www/test-google-map.php5:32 Stack trace: #0 /home/immobiliD/www/test-google-map.php5(32): SimpleXMLElement->__construct('<?xml version="...') #1 {main} thrown in /home/immobiliD/www/test-google-map.php5 on line 32

----------------

Impossible de trouver la solution. J'ai l'impression qu'il y a un problème avec le loop car si je requête directement avec le code suivant cela fonctionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php
 
   // Your Google Maps API key
   $key = "YOUR_KEY_HERE";
 
   // Desired address
   $address = "http://maps.google.com/maps/geo?q=411+Woody+Hayes+Drive,+Columbus,+OH&output=xml&key=$key";
 
   // Retrieve the URL contents
   $page = file_get_contents($address);
 
   // Parse the returned XML file
   $xml = new SimpleXMLElement($page);
 
// Parse the coordinate string
list($longitude, $latitude, $altitude) = explode(",", 
     $xml->Response->Placemark->Point->coordinates);
 
// Output the coordinates
echo "Longitude: $longitude, Latitude: $latitude";
Si vous avez une piste, Merci d'avance.

Yahn
yahn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2006, 19h40   #2
Invité de passage
 
Inscription : mars 2004
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 7
Points : 2
Points : 2
C'est résolu. Il suffit d'encoder en utf8 la variable page avant de la parser avec simpleXMLelement !

> $page=utf8_encode($page);

Voilou.
yahn est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h04.


 
 
 
 
Partenaires

Hébergement Web