【发布时间】:2017-05-26 15:01:33
【问题描述】:
我正在处理一个包含 HTML、PHP 和 Javascript 的 .php 文件以及 MySQL 中一个名为 data 的表,其中包含按日期排序的 GPS 信息。我正在使用以下代码,以便用户可以在表单中键入日期。
<form method="POST">
<div class="col-sm-12">
<p>
<label for="route_date_ids">Insert date</label>
<input name="route_date_id"></input>
</p>
</div>
<div class="col-sm-12">
<p>
<input type="submit" value="View route"/>
</p>
</div>
</form>
<?php if (isset($_POST['route_date_id'])) : ?>
<?php
$query = "SELECT * FROM data WHERE measured_at LIKE ". $_POST['route_date_id'];
$result = mysqli_query($conn, $query);
因此,一旦用户键入日期并按下按钮,在服务器端,我就会得到日期以用户键入的字符开头的数据。我现在的目标是将这些信息($result,包含纬度和经度数据)传递给下面的函数。
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: {lat: 0, lng: -180},
mapTypeId: 'terrain'
});
var flightPlanCoordinates = [
{lat: 37.772, lng: -122.214},
{lat: 21.291, lng: -157.821},
{lat: -18.142, lng: 178.431},
{lat: -27.467, lng: 153.027}
];
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
}
所以当页面在提交后重新加载时,地图会显示与用户输入的日期相对应的坐标。
我无法解决最后一个问题。任何帮助将不胜感激。
【问题讨论】:
-
您的代码容易受到SQL injection 攻击。您应该使用mysqli 或PDO 准备好的语句和this post 中描述的绑定参数。
-
当您检查查询结果时,创建一个 javascript 变量,然后从 initmap 函数或另一个函数中读取它。如果需要动态更新,使用jquery请求数据,以json形式发送给客户端,用javascript解析/处理。
-
@Sakura Kinomoto 如何创建一个包含查询结果的 javascript 变量并从 initMap 读取它?抱歉这个问题,我是 Javascript 和 PHP 的新手!
-
从 PHP 中可以直接生成 javascript。使用任何函数将 $result var 的结果解析为字符串,然后使用 echo "";获取 javascript 空间上的变量。
标签: javascript php mysql google-maps