javascript - PHP在谷歌地图上显示多维数组值

标签 javascript php implode

谁能帮助我,我对 PHP 很陌生,也许答案很明显。

我将用户详细信息和邮政编码存储在数据库中,然后我需要使用 javascript 在谷歌地图上将邮政编码显示为标记(这是有效的)。

但是我试图在谷歌地图的信息窗口上显示每个用户数据,我只能显示结果的最后一行,因此所有信息窗口都显示相同的记录,而不是该邮政编码的单独数据。

我认为我需要合并以下两个查询,但我不知道如何组合。因为邮政编码需要内爆才能让“邮政编码”显示在 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 中使用该数组。

您可以阅读有关此的文档 here .

注意,$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 现在是所有结果的数组,可以使用。

关于javascript - PHP在谷歌地图上显示多维数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796914/

相关文章:

javascript - 取消选择表单输入并在提交之前等待函数

php - 使用 updateOrCreate 方法更新一对多关系

php - mysql 选择日期时间字段小于指定值的所有记录

php - SQL注入(inject)测试-mysql_query

php - 如何在跳过空数组项的同时内爆数组?

javascript - 使用 Materialise css 在 Aurelia 中选择

javascript - 为什么我在数组中推送的值未定义?

javascript - 我无法创建新项目 “Unable to resolve dependency for ':app @ debug/compileClasspath'”

php - 从 mysql 列导入到复选框 php

php 内爆没有按预期工作