亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將php中的數據傳輸到javascript with while循環[復制]

如何將php中的數據傳輸到javascript with while循環[復制]

開心每一天1111 2019-04-10 12:15:38
我該如何使用多個標記?此代碼僅顯示一個標記。我知道我需要使用循環但是如何?此代碼將標記與數據庫中的信息放在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 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

該行$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”。


查看完整回答
反對 回復 2019-05-17
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

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


查看完整回答
反對 回復 2019-05-17
  • 2 回答
  • 0 關注
  • 434 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號