[英]PHP Display multi-dimentional array value on google map
誰能幫我,我對PHP還是很陌生,也許答案很明顯。
我將用戶詳細信息和郵政編碼存儲在數據庫中,然后需要使用javascript在Google地圖上將這些郵政編碼顯示為標記(這是可行的)。
但是我試圖在google map的信息窗口上顯示每個用戶數據,但是我只能顯示結果的最后一行,因此所有信息窗口都顯示相同的記錄,而不是該郵政編碼的單個數據。
我想我需要結合以下兩個查詢,但是我不知道如何。 因為需要對郵政編碼進行內爆才能使“郵政編碼”顯示在地圖上。
我想要達到的目標:
postcode need to be ("AA4 1DD", "AB1 5CD","CC4 1BBs");
infowindow (Fred, 7 street, AA4 1DD);
我在數據庫中擁有什么:
name Fred Ann John
address 7 street 8 road 4 line
postcode AA4 1DD AB1 5CD CC4 1BB
PHP:
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$locations = $conn->prepare("SELECT postcode FROM tbl_data");
$locations->execute();
$lo= $locations->fetchAll(PDO::FETCH_COLUMN);
echo "'". $t = implode(' ,', $lo)."'";// working
//info window
$info_stmt = $conn->prepare("SELECT name, postcode FROM tbl_data, tbl_login WHERE tbl_data.user_id=tbl_login.user_id ");
$info_stmt->execute();
$result = $info_stmt -> fetchAll();
foreach( $result as $row ) {
echo $row[0];
/* echo "<pre>";
echo gettype($row[0]);
echo "</pre>";*/
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
die();
}
使用Javascript:
var addressArray = new Array(<?php echo "'". $t = implode("' ,'", $lo)."'"; ?>); //postcodes working
var geocoder = new google.maps.Geocoder();
for (var i = 0; i < addressArray.length; i++) {
geocoder.geocode( { 'address': addressArray[i]}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: 'Click for more details'
});
//create info window
var infoWindow = new google.maps.InfoWindow({
content: "<p>Name: </p><?php echo $row[0].'<br />'.$row[1]; ?>"
});
您的問題在這里:
content: "<p>Food Name: </p><?php echo $row[0].'<br />'.$row[1]; ?>"
您不能像這樣混合使用JavaScript和PHP,並且$ row不在-或不應該在該上下文中實際存在,因為它不在foreach
語句之內,或者-如果這是一個單獨的JS文件-您沒有相應的上下文。
為了實現您的需求,我建議使用AJAX並將GET
請求設置到文件,然后該文件返回一個數組,然后可以在JavaScript中使用該數組。
您可以在此處閱讀有關文檔。
請注意, $row
應該這樣使用: $row['ColumnName']
不只是可讀性)。
例如: echo $row['address'];
示例代碼(PHP):
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$locations = $conn->prepare("SELECT postcode FROM tbl_data");
$locations->execute();
$lo= $locations->fetchAll(PDO::FETCH_COLUMN);
echo "'". $t = implode(' ,', $lo)."'";// working
//info window
$info_stmt = $conn->prepare("SELECT name, postcode FROM tbl_data, tbl_login WHERE tbl_data.user_id=tbl_login.user_id ");
$info_stmt->execute();
echo $info_stmt->fetchAll();
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
然后你的JavaScript:
$(document).ready(function () {
var output[];
$.get("phpfile.php")
.done(function(data) {
output = data;
});
});
output
現在是所有results
的數組,可以使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.