Javascript 在mysql中使用js和php存储地理编码地址

Javascript 在mysql中使用js和php存储地理编码地址,javascript,php,mysql,google-maps,google-maps-api-3,Javascript,Php,Mysql,Google Maps,Google Maps Api 3,我知道同一主题有很多问题,但我不能让它们在我的代码中工作,因为我需要用不同的方式来做。。。 我有一个html表单在数据库中插入信息,代码是: <form name="form1" action="insert.php" method="post"> <input id="street" name="street" type="textbox" placeholder="street" maxlength="20" /> <input id="numb

我知道同一主题有很多问题,但我不能让它们在我的代码中工作,因为我需要用不同的方式来做。。。 我有一个html表单在数据库中插入信息,代码是:

<form name="form1" action="insert.php" method="post">
    <input id="street" name="street" type="textbox" placeholder="street" maxlength="20" />
    <input id="number" name="number" type="textbox" placeholder="number" maxlength="5" />
    <input id="name" name="name" type="textbox" placeholder="Name" maxlength="40" /></div>
    <input type="submit" id="submit" name="submit" value="Send" ></input>
</form>

以及“insert.php”文件,即:

<?php
    @$link = mysqli_connect("127.0.0.1","User","Pass","DB");
        if(!$link){
        die ("Error n°".mysqli_connect_errno().": ".mysqli_connect_error());
        }   
    $sql = "INSERT INTO markers (Street, Number, Name)
            VALUES ('{$_POST['street']}','{$_POST['number']}','{$_POST['name']}')";

    $rs = mysqli_query ($link, $sqql);
    if (!$rs){
        die('Error n°'.mysqli_errno($link).": ".mysqli_error($link));
    }   
?>
<script>
function codeAddress() {
    var number = document.getElementById('number').value;
    var address = document.getElementById('street').value + ' ' + number + city;
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      map.setCenter(results[0].geometry.location);
      lat = results[0].geometry.location.lat();
      lng = results[0].geometry.location.lng();
    } else {
      alert('Error: ' + status);
    }
  });
} 
</script>

这肯定是我见过的将数据从PHP转换成javascript的最复杂的方法,而最终的javascript数据结构肯定不是最好的。与其使用四个独立的全等数组(
dblatitude
dblongitude
等),为什么不使用一个包含javascript普通对象的数组,每个对象都具有属性
dblatitude
dblongitude
等?变量
dbcont
是不必要的,语句
dblatitud.length=dbcont。当已经编写的代码如此混乱时,很难提供帮助。如果没有cont var,我将在代码的其他部分遇到一些问题。我必须创建js数组来使用它们,而不是php数组,因为我可以在其他函数中更轻松地使用它们。但是整个代码非常大,我只是在这里复制db连接中最重要的部分。您建议如何“剪切”阵列的一部分?首先要解决的是使用唯一ID(UID或数据库键)。数据库表中的每条记录都必须有一个UID。为了能够更新正确的记录,必须将每个记录的UID发送到客户端,以便将其作为更新指令的一部分发送回服务器(例如作为表单中的隐藏输入字段)。把你的注意力放在这个问题上,你已经解决了50%的问题。另外50%包括编写执行ajax请求的客户端代码,包括从表单中提取的数据(使用jQuery很简单),以及处理此类请求的服务器端PHP脚本。
<script>
    var dblat = [];
    var dblong = [];
    var dbstreet = [];
    var dbnumber = [];
    var dbcont = 0;
    <?php   while ($v = mysqli_fetch_array($rs, MYSQL_ASSOC)) {
                $latitude = $v['Latitude'];
                $longitude = $v['Longitude'];
                $street = $v['street'];
                $number = $v['number'];
    echo    "dblatitude.push($latitud);";
    echo    "dblongitude.push($longitud);";
    echo    "dbstreet.push(\"$street\");";
    echo    "dbnumber.push($number);";
    echo    "dbcont = dbcont + 1;"; 
    echo    "dblatitud.length = dbcont;";
            }; 
    ?>
function loadMarkers() {
    for (var i = 0; i < dblatitud.length; i++) {
        var latlong = new google.maps.LatLng(dblatitude[i], dblongitude[i]);
        var marker = new google.maps.Marker({
                        map: map,
                        position: latlong,
                        animation: google.maps.Animation.DROP
                    });
    } 
}
</script>