Google Maps
Pagina: « vorige 1 2 3 volgende »
Nu moet ik eerst mijn query aanpassen.
ben nog niet zo snel met scripten
laat het hore wanneer het gelukt is
Toevoeging op 26/05/2012 11:12:46:
IS HET NIET HANDIGER EEN ARRAY TE MAKEN?
$dbResult = mysql_query($selectAdresQuery);
//print "resultaat: $result"; // TEST
if (!$dbResult) {
print 'Select query kon niet worden uitgevoerd.';
}
else {
$row = mysql_fetch_assoc($dbResult);
print '<pre>'; print_r($row); print '</pre>'; // TEST TEST
$i = 0;
while($row = mysql_fetch_assoc($dbResult)) {
$straten[$i] = $row['straat'];
$nummers[$i] = $row['nummer'];
$plaatsen[$i] = $row['plaats'];
$landen[$i] = $row['land'];
$i++;
}
}
Toevoeging op 26/05/2012 11:20:17:
ik weet niet hoe ik de query moet schrijven
ik kom er niet uit
het is voor jullie misschien makkelijk
maar het lukt me niet
Toevoeging op 26/05/2012 11:23:59:
ik ga je niet voorzeggen wat je precies moet doen. probeer eens in 1 zin op te schrijven wat je precies nodig hebt. houd dan met alles rekening wat je kunt bedenken. punten mogen niet!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$dbResult = mysql_query($selectAdresQuery);
//print "resultaat: $result"; // TEST
if (!$dbResult) {
print 'Select query kon niet worden uitgevoerd.';
}
else {
$row = mysql_fetch_assoc($dbResult);
print '<pre>'; print_r($row); print '</pre>'; // TEST TEST
$i = 0;
while($row = mysql_fetch_assoc($dbResult)) {
$straten[$i] = $row['straat'];
$nummers[$i] = $row['nummer'];
$plaatsen[$i] = $row['plaats'];
$landen[$i] = $row['land'];
$i++;
}
}
//print "resultaat: $result"; // TEST
if (!$dbResult) {
print 'Select query kon niet worden uitgevoerd.';
}
else {
$row = mysql_fetch_assoc($dbResult);
print '<pre>'; print_r($row); print '</pre>'; // TEST TEST
$i = 0;
while($row = mysql_fetch_assoc($dbResult)) {
$straten[$i] = $row['straat'];
$nummers[$i] = $row['nummer'];
$plaatsen[$i] = $row['plaats'];
$landen[$i] = $row['land'];
$i++;
}
}
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$dbResult = mysql_query($selectAdresQuery);
//echo 'resultaat: ' . $result; //TEST
if ($dbResult === false)
{
echo 'Select query kon niet worden uitgevoerd.';
}
else
{
$row = mysql_fetch_assoc($dbResult);
echo '<pre>' . print_r($row) . '</pre>'; // TEST TEST
for($i = 0; $row = mysql_fetch_assoc($dbResult); $i++)
{
$straten[$i] = $row['straat'];
$nummers[$i] = $row['nummer'];
$plaatsen[$i] = $row['plaats'];
$landen[$i] = $row['land'];
}
}
?>
$dbResult = mysql_query($selectAdresQuery);
//echo 'resultaat: ' . $result; //TEST
if ($dbResult === false)
{
echo 'Select query kon niet worden uitgevoerd.';
}
else
{
$row = mysql_fetch_assoc($dbResult);
echo '<pre>' . print_r($row) . '</pre>'; // TEST TEST
for($i = 0; $row = mysql_fetch_assoc($dbResult); $i++)
{
$straten[$i] = $row['straat'];
$nummers[$i] = $row['nummer'];
$plaatsen[$i] = $row['plaats'];
$landen[$i] = $row['land'];
}
}
?>
zaten een paar niet echt foutjes in, maar dat kon netter. bekijk het eens, wat ik veranderd heb
Toevoeging op 26/05/2012 11:32:17:
en nu de query nog! probeer die zin eens te maken.
Ik heb ALLE output tevoorschijn gekregen in mijn adresboek. Queries geschreven en uitgelezen. ALLES
en nu die stomme google map nog
Krijg ik een mooi script (hierboven) maar nu lukt het me niet de Query uit te lezen
want ik heb alles in een array gestopt. (van Gunther)
Nu staat alle in een $adres '' en moet ik weer helemaal om.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$fetchedRows = mysql_fetch_assoc($dbResult);
echo '<pre>'.print_r($fetchedRows).'</pre>'; // test test
for ($i = -1; $row = $fetchedRows[++$i]; ) {
$straten[] = $row['Straten'];
}
?>
$fetchedRows = mysql_fetch_assoc($dbResult);
echo '<pre>'.print_r($fetchedRows).'</pre>'; // test test
for ($i = -1; $row = $fetchedRows[++$i]; ) {
$straten[] = $row['Straten'];
}
?>
en gunter gebruikt geen array
dus de $row gaat het niet mee lukken.
Weet dat het simpel is maar
ben de weg nu echt even kwijt
die fetches zijn inderdaad beter.
maar....
hie lees ik nu
$straat = '';
$huisnummer = '';
$postcode = '';
$gemeente = '';
$provincie = '';
$land = '';
uit?
zoals het in het script van gunter staat?
Toevoeging op 26/05/2012 11:42:38:
sorry
ik kan ook al niet meer typen
hoe lees ik nu de query uit met gebruik te maken van het script van Gunter
Jeroen, sorry. Toen ik begon met schrijven had ik die $i++ en $i=0 over het hoofd gezien, beide opties kunnen en zijn goed.
heeft 1 van de heren voor mij misschien ook een goede tip?
bekijk eens wat er in het script van gunther gebeurt! hij zet gewoon alles achter elkaar in een link dmv de contenatie-operator (de punt). dus de waardes van bovengenoemde variabelen kun je eenvoudig in die link zetten, waardoor je de custom link hebt, die je nodig hebt. wat jij dus zult moeten doen zijn databasevariabelen in die link zetten.
en dan voor eens en altijd plaats ik dat hele script hier
zodat anderen niet zoals ik, in 3 dagen 3 jaar ouder worden
sjonge met dat scripten denk je iets te hebben opgelost om aan de andere kant weer helemaal vast te lopen
oke ik ga aan het werk en hou mijn mond verder
Code (php)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_db = "";
define("MAPS_HOST", "maps.google.com");
// KEY via https://code.google.com/apis/console
define("KEY", "YOUR_GOOGLE_MAPS_API_KEY");
// Opens a connection to a MySQL server
$connection = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if (!$connection) {
die("Not connected : " . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($mysql_db, $connection);
if (!$db_selected) {
die("Can\'t use db : " . mysql_error());
}
// Select all rows in the places table
$query = "SELECT * FROM places";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
// Initialize delay in geocode speed
$delay = 0;
// Set base url for the API
$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['straat'] . $row['nummer'] . $row['plaats'] . $row['land'];
$id = $row['ID'];
$request_url = $base_url . "&q=" . urlencode($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 = explode(",", $coordinates);
// Format: Longitude, Latitude, Altitude
$lat = $coordinatesSplit[1];
$lng = $coordinatesSplit[0];
$query = sprintf("UPDATE places " .
" SET lat = '%s', lng = '%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
{
echo $address . " OK!<br />";
}
} 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);
}
}
?>
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_db = "";
define("MAPS_HOST", "maps.google.com");
// KEY via https://code.google.com/apis/console
define("KEY", "YOUR_GOOGLE_MAPS_API_KEY");
// Opens a connection to a MySQL server
$connection = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if (!$connection) {
die("Not connected : " . mysql_error());
}
// Set the active MySQL database
$db_selected = mysql_select_db($mysql_db, $connection);
if (!$db_selected) {
die("Can\'t use db : " . mysql_error());
}
// Select all rows in the places table
$query = "SELECT * FROM places";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
// Initialize delay in geocode speed
$delay = 0;
// Set base url for the API
$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['straat'] . $row['nummer'] . $row['plaats'] . $row['land'];
$id = $row['ID'];
$request_url = $base_url . "&q=" . urlencode($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 = explode(",", $coordinates);
// Format: Longitude, Latitude, Altitude
$lat = $coordinatesSplit[1];
$lng = $coordinatesSplit[0];
$query = sprintf("UPDATE places " .
" SET lat = '%s', lng = '%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
{
echo $address . " OK!<br />";
}
} 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);
}
}
?>
Gewijzigd op 26/05/2012 13:09:50 door Koen Vlaswinkel
toevoeging van een tabel places in je database
maar moet ik de coordinaten opslaan in een xml bestand?
Ineke, 'k heb je een pm gestuurd ;)
Je hoeft niet perse een nieuwe tabel te maken, je kan ook de kolommen lat en lng aan je bestaande tabel toevoegen. Als je dit script dan draait wordt het adres opgehaald op regel 38 en worden de coördinaten toegevoegd aan lat en lng bij regel 53-55. Dan kan je voor de coördinaten dus de kolommen lat en lng gebruiken.
Ik kan niet goed lezen waar de coordinaten worden uitgelezen
en de $id = $row['ID'];
die gebruik ik niet dus die kan ik dan toch gewoon weglaten?
of is dat de vestigings_id? (in mijn geval)
ik probeer het te begrijpen/lezen maar pittig
http://maps.google.com/maps/geo?output=xml&q=Amsterdam gehaald. Je kan zien dat daar de coördinaten in een regel staan, dus daarom worden ze gesplitst. Meer uitleg over dit script op https://developers.google.com/maps/articles/phpsqlgeocode, waar ik het script ook vandaan heb.
In jouw geval is dat dus vestigings_id, maar dan moet je ook op regel 55 de query aanpassen voor vestigings_id, anders worden alle records in de database aangepast. De coördinaten worden uitgelezen op regels 46-51. Ze worden eerst uit Google's XML bestand gehaald en dan worden ze gesplit met de functie explode. Ze worden namelijk uit het XML bestand op Het probleem is opgelost via online support. Het script is goed maar foutief geplaatst, daarom kon er dus niets getoond worden.