如何使用while循环将php中的数据传输到javascript
如何使用多个标记?此代码仅显示一个标记 我知道我需要使用循环,但如何使用 这段代码将标记与来自谷歌地图数据库的信息放在一起 我的问题是,一旦你把标记放在屏幕上,数据库中的其他标记就不会出现了如何使用while循环将php中的数据传输到javascript,javascript,php,pdo,Javascript,Php,Pdo,如何使用多个标记?此代码仅显示一个标记 我知道我需要使用循环,但如何使用 这段代码将标记与来自谷歌地图数据库的信息放在一起 我的问题是,一旦你把标记放在屏幕上,数据库中的其他标记就不会出现了 <?php $connectmaps=$db->prepare("select title,longt,latit,description from pages where onmap = 1"); $connectmaps->execute(); $loadmaps=$connectma
<?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);
}
jQuery(函数($){
//谷歌地图
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(脚本);
});
函数初始化(){
var映射;
var bounds=new google.maps.LatLngBounds();
变量映射选项={
mapTypeId:“路线图”
};
//赛法达·哈里塔伊·戈斯特
map=new google.maps.map(document.getElementById(“map_canvas”),mapOptions);
地图.设置倾斜(45);
//多重标记
var phpden=;
var lont=parseFloat(phpden.lont)
var title=phpden.title
var description=phpden.description
var boylam=parseFloat(phpden.latit)
变量标记=[
[标题,long,latit],
];
//İnfo窗口
var infoWindowContent=[
[''+''+标题+'+''+说明+''+'+''],
];
//显示多个标记
var infoWindow=new google.maps.infoWindow(),marker,i;
//阿雷特çi Dizisini Döngüye Sok ve HaritaÜzerine Yerleştir
对于(i=0;i
行$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
只是一个最后的建议,但是正如上面所说的,你应该考虑使用更多的描述性变量名。不仅仅是在团队中工作,而是为你自己。缩写的和不相关的命名变量使你的代码更难理解。当你在你的复杂性增加之后回来时,你或其他人会浪费T。ime正在尝试找出“phpden”和“boylam”是什么。
方法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);
@zemarkhos只是想指出,使用下面@miken32答案中的fetchAll()
行将比仅用于收集数据的for(){fetch()}
循环更好。但是,有一点需要注意,如果在转换为json之前需要修改/添加/计算数据,则需要使用for()
loop。在这种情况下,fetchAll()
可能会更好/更快。
<?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);