KrisTemmerman
22 May 2009, 12:37
hoi dit is mijn eerste post hier op minatica en ik hoop dat jullie me kunnen helpen.
Ik heb adres gegevens in een databank. deze gegevens worden omgevormd naar gps coordinaten.
Nu het probleem is dat speciale tekens (bv. é à è ^ ù µ ^) niet kunnen worden ingelezen.
De parsing error die ik krijg gaat als volgt:
parser error : Input is not proper UTF-8, indicate encoding !
wat ik reeds geprobeerd heb is
utf8_encode($address);[/ PHP]
en een function die de karakters omzet naar htmlcode bv
[PHP]$xmlStr=str_replace("ß",'ß',$xmlStr);
ik hoop dat jullie me kunnen helpen.
de code die de bestanden in een xmlsheet plaatst
<?php
require("log.php");
define("MAPS_HOST", "maps.google.com");
define("KEY", "xxxx");
// Opens a connection to a MySQL server
$connection = mysql_connect("localhost", $username, $password);
if (!$connection) {
die("Not connected : " . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die("Can\'t use db : " . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT * FROM locations WHERE 1";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
// Initialize delay in geocode speed
$delay = 0;
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;
// Iterate through the rows, geocoding each address
while ($row = @mysql_fetch_assoc($result)) {
$geocode_pending = true;
while ($geocode_pending) {
$address = $row["pAdress"];
$id = $row["id"];
$request_url = $base_url . "&q=" . $address;
$xml = simplexml_load_file($request_url) or die("url not loading");
$status = $xml->Response->Status->code;
if (strcmp($status, "200") == 0) {
// Successful geocode
$geocode_pending = false;
$coordinates = $xml->Response->Placemark->Point->coordinates;
$coordinatesSplit = split(",", $coordinates);
// Format: Longitude, Latitude, Altitude
$lat = $coordinatesSplit[1];
$lng = $coordinatesSplit[0];
$query = sprintf("UPDATE locations " .
" SET pLat = '%s', pLng = '%s' " .
" WHERE id = '%s' LIMIT 1;",
mysql_real_escape_string($lat),
mysql_real_escape_string($lng),
mysql_real_escape_string($id));
$update_result = mysql_query($query);
if (!$update_result) {
die("Invalid query: " . mysql_error());
}
} else if (strcmp($status, "620") == 0) {
// sent geocodes too fast
$delay += 100000;
} else {
// failure to geocode
$geocode_pending = false;
echo "Address " . $address . " failed to geocoded. ";
echo "Received status " . $status . "
\n";
}
usleep($delay);
}
}
?>
Ik heb adres gegevens in een databank. deze gegevens worden omgevormd naar gps coordinaten.
Nu het probleem is dat speciale tekens (bv. é à è ^ ù µ ^) niet kunnen worden ingelezen.
De parsing error die ik krijg gaat als volgt:
parser error : Input is not proper UTF-8, indicate encoding !
wat ik reeds geprobeerd heb is
utf8_encode($address);[/ PHP]
en een function die de karakters omzet naar htmlcode bv
[PHP]$xmlStr=str_replace("ß",'ß',$xmlStr);
ik hoop dat jullie me kunnen helpen.
de code die de bestanden in een xmlsheet plaatst
<?php
require("log.php");
define("MAPS_HOST", "maps.google.com");
define("KEY", "xxxx");
// Opens a connection to a MySQL server
$connection = mysql_connect("localhost", $username, $password);
if (!$connection) {
die("Not connected : " . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die("Can\'t use db : " . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT * FROM locations WHERE 1";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
// Initialize delay in geocode speed
$delay = 0;
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;
// Iterate through the rows, geocoding each address
while ($row = @mysql_fetch_assoc($result)) {
$geocode_pending = true;
while ($geocode_pending) {
$address = $row["pAdress"];
$id = $row["id"];
$request_url = $base_url . "&q=" . $address;
$xml = simplexml_load_file($request_url) or die("url not loading");
$status = $xml->Response->Status->code;
if (strcmp($status, "200") == 0) {
// Successful geocode
$geocode_pending = false;
$coordinates = $xml->Response->Placemark->Point->coordinates;
$coordinatesSplit = split(",", $coordinates);
// Format: Longitude, Latitude, Altitude
$lat = $coordinatesSplit[1];
$lng = $coordinatesSplit[0];
$query = sprintf("UPDATE locations " .
" SET pLat = '%s', pLng = '%s' " .
" WHERE id = '%s' LIMIT 1;",
mysql_real_escape_string($lat),
mysql_real_escape_string($lng),
mysql_real_escape_string($id));
$update_result = mysql_query($query);
if (!$update_result) {
die("Invalid query: " . mysql_error());
}
} else if (strcmp($status, "620") == 0) {
// sent geocodes too fast
$delay += 100000;
} else {
// failure to geocode
$geocode_pending = false;
echo "Address " . $address . " failed to geocoded. ";
echo "Received status " . $status . "
\n";
}
usleep($delay);
}
}
?>