javascript - 如何使用 while 循环将 php 中的数据传输到 javascript

标签 javascript php pdo

如何使用多个标记?此代码仅显示一个标记。

我知道我需要使用循环,但是如何使用?

此代码将带有来自 Google map 数据库的信息的标记放在 Google map 上

我的问题是,一旦您将标记放在屏幕上,数据库中的其他标记就不会出现。

<?php
$connectmaps=$db->prepare("select title,longt,latit,description from pages where onmap = 1");
$connectmaps->execute();
$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);

$loadmap_json = json_encode($loadmaps);
?>

<script>
jQuery(function ($) {
        // Google Maps
        var script = document.createElement('script');
        script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&callback=initialize&key=MY_GOOGLE_MAPS_API_KEY";
        document.body.appendChild(script);
    });
    function initialize() {
        var map;
        var bounds = new google.maps.LatLngBounds();
        var mapOptions = {
            mapTypeId: 'roadmap'
        };
        // Sayfada Haritayı Göster
        map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
        map.setTilt(45);


        // Multiple Markers
        var phpden = <?php echo $loadmap_json; ?>;
        var longt= parseFloat(phpden.longt)
        var title= phpden.title
        var description = phpden.description
        var boylam = parseFloat(phpden.latit)

        var markers = [ 
            [title, longt, latit],
        ];
        // İnfo Windows
        var infoWindowContent = [
            ['<div class="info_content">' + '<h3>' + title+ '</h3>' + '<p>' + description + '</p>' + '</div>' + ''],
        ];


        // Show multiple markers
        var infoWindow = new google.maps.InfoWindow(), marker, i;
        // İşaretçi Dizisini Döngüye Sok ve Harita Üzerine Yerleştir
        for (i = 0; i < markers.length; i++) {
            var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
            bounds.extend(position);
            marker = new google.maps.Marker({
                position: position,
                map: map,
                title: markers[i][0]
            });


            google.maps.event.addListener(marker, 'click', (function (marker, i) {
                return function () {
                    infoWindow.setContent(infoWindowContent[i][0]);
                    infoWindow.open(map, marker);
                }
            })(marker, i));
            // Tüm İşaretçileri Otomatik Olarak Ekrana Sığdır
            map.fitBounds(bounds);
        }

最佳答案

fetch() 方法仅获取第一条记录。请改用 fetchAll() 方法。这将为您提供集合中每个记录的多维数组。

另请注意,如果您没有将任何变量传递到查询中,PDO 确实有一个 query() 方法;无需准备和执行。

<?php
$connectmaps = $db->query(
    "SELECT title, longt, latit, description FROM pages WHERE onmap = 1"
);
$loadmaps = $connectmaps->fetchAll(\PDO::FETCH_ASSOC);
$loadmaps_json = json_encode($loadmaps);

关于javascript - 如何使用 while 循环将 php 中的数据传输到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56173083/

相关文章:

javascript - 如何在AJAX中使用FormData?

javascript - 如何跟踪使用特定输入元素的事件

javascript - 如何通过 javascript/jquery 自动聚焦新生成的文本框

PHP : Function that recognizes data successfully stored in database

php - MySQL 联结表查询(带或不带联结)

PHP 从数据库中检索列数据

javascript - 在javascript中重命名对象键(变量)

javascript - 避免使用随机图像阵列重复 - 首先循环浏览所有图像

php - Jwt token 无法生成

php - yii mssql 查询不工作