为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_遁去的一_1 2021-05-31 18:39:04
如何使用多个标记?此代码仅显示一个标记。我知道我需要使用循环,但如何使用?此代码将标记与 Google 地图上的数据库中的信息一起放置我的问题是,一旦您将标记放在屏幕上,数据库中的其他标记就不会出现。<?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]            });
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

该行$loadmaps=$connectmaps->fetch(PDO::FETCH_ASSOC);本身只会获取结果集的第一条记录,因此,您可能需要遍历结果集并将每个结果附加到一个数组中,例如


$mapMarkers = [];

while($marker=$connectmaps->fetch(PDO::FETCH_ASSOC)){ 

   array_push($mapMarkers, $marker);

}

$loadmap_json = json_encode($mapMarkers);

您还需要修改您的 javascript 以期待一组标记,因为您当前的代码需要一个结果。您还应该预料到没有结果的可能性(空 JSON 数组)。


for(var i = 0; i < phpden.length(); i++) {

 //Do you process of each marker here... e.g. phpden[i].longt

 //Or better... create a function that you call for each marker to add them

}

只是最后的建议,但如上所述,您应该考虑使用更具描述性的变量名称。如果您在团队中工作,不仅是为了其他人,也是为了您自己。缩写和不相关的命名变量会使您的代码更难理解。当您在复杂性增加后稍后回来时,您或其他人将浪费时间试图弄清楚“phpden”和“boylam”是什么。


查看完整回答
反对 回复 2021-06-03
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

该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);


查看完整回答
反对 回复 2021-06-03
  • 2 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信