微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Maps&如何在不包含该php页面的情况下将变量从php页面传递到另一个

我正在研究示例:“将PHP / MysqL与Google Maps结合使用”
https://developers.google.com/maps/articles/phpsqlajax_v3

我知道本教程已经讨论了很多,但是找不到所需的答案,希望有人可以提供帮助.

我正在尝试显示带有标记的Google地图.每个标记都是一个书本图标.图书按类别进行分类(在数据库中,我将其称为“类型”).这个想法是,用户可以选择他们想要的书的类别,然后仅这些书将显示在地图上.

我的问题是我无法使FORM选择生效,“ type”变量需要从index.PHP传递到PHPsqlajax_genxml2.PHP页面,以便查询数据库.

我的问题是-如何将PHP变量$type获取PHPsqlajax_genxml2.PHP页面

PHPsqlajax_genxml2.PHP页面未包含在index.PHP页面中,但是有一个downloadUrl函数
downloadUrl(“ PHPsqlajax_genxml2.PHP”,函数(数据)

这是我的完整文件.提前致谢

的index.PHP

    <?PHP
    // Get parameters from URL
    $type = $_GET["type"];
    ?>


    <!DOCTYPE html >
  <head>
    <Meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <Meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>PHP/MysqL & Google Maps Example</title>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
    <script type="text/javascript">
    //<![CDATA[

    var customIcons = {
      'Murder Mystery': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_black.png'
      },
      'Travel Guide': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_gray.png'
      },
      'Romance': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_purple.png'
      },
      'Short Story': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_green.png'
      },
      'Thriller': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png'
      },
      'Comedy': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_yellow.png'
      },
      'Graphic Novel': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_white.png'
      },
      'Satire': {
        icon: 'http://labs.google.com/ridefinder/images/mm_20_brown.png'
      }

    };
</script>

<script type="text/javascript">

//Check if browser supports W3C Geolocation API

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
  } else {
  alert('Geolocation is required for this page, but your browser doesn&apos;t support it. Try it with a browser that does, such as Opera 10.60.');
}

function errorFunction(position) {
  alert('Error!');
}

//If successful geolocation then draw the map, show my coords on the map, and pull in the icons

function successFunction(position) {
  var lat = position.coords.latitude;
  var lng = position.coords.longitude;
        var map = new google.maps.Map(document.getElementById("map"), 
        {
        center: new google.maps.LatLng(lat, lng),
        zoom: 13,
        mapTypeId: 'roadmap'
        });

        var infoWindow = new google.maps.InfoWindow;

      // sql to XML file
      //downloadUrl("PHPsqlajax_genxml2.PHP?type=" + type, function(data) {
      downloadUrl("PHPsqlajax_genxml2.PHP", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("name");
          var address = markers[i].getAttribute("address");
          var type = markers[i].getAttribute("type");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var html = "<b>" + name + "</b> <br/>" + address + "<br/>" + "<i>" + type + "</i>";
          var icon = customIcons[type] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon
          });
          bindInfoWindow(marker, map, infoWindow, html);
        }
      });
    }

    function bindInfoWindow(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
      });
    }

    function downloadUrl(url, callback) {
      var request = window.ActiveXObject ?
          new ActiveXObject('Microsoft.XMLHTTP') :
          new XMLHttpRequest;

      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          request.onreadystatechange = donothing;
          callback(request, request.status);
        }
      };

      request.open('GET', url, true);
      request.send(null);
    }

    function donothing() {}

    //]]>

  </script>

  </head>

<body onl oad="successFunction(position)">

<div id="map" style="width: 500px; height: 400px"></div>

<form action="<?PHP $_PHP_SELF ?>" method="GET">
<select name="type">
  <option value="Murder Mystery">Murder Mystery</option>
  <option value="Travel Guide">Travel Guide</option>
  <option value="Romance">Romance</option>
  <option value="Short Story">Short Story</option>
  <option value="Thriller">Thriller</option>
  <option value="Comedy">Comedy</option>
  <option value="Graphic Novel">Graphic Novel</option>
  <option value="Satire">Satire</option>
</select>
<input type="submit" value="Submit" />
</form>

</body>

</html>

PHPsqlajax_genxml2.PHP

<?PHP
// Get parameters from URL
$type = $_GET["type"];

include ("inc/DB_connect.PHP");

//Using PHP's echo to Output XML

function parsetoXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
}


// Opens a connection to a MysqL server
$connection=MysqL_connect (localhost, $username, $password);
if (!$connection) {
  die('Not connected : ' . MysqL_error());
}

// Set the active MysqL database
$db_selected = MysqL_select_db($database, $connection);
if (!$db_selected) 
{
  die ('Can\'t use db : ' . MysqL_error());
}

// Select all the rows in the markers table
//$query = "SELECT * FROM `markers` WHERE 1";
$query = "SELECT * FROM `markers` WHERE `type` = '$type'";
$result = MysqL_query($query) or die(MysqL_error());

header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<markers>';

// Iterate through the rows, printing XML nodes for each
while ($row = @MysqL_fetch_assoc($result))
{
  // ADD TO XML DOCUMENT NODE
  echo '<marker ';
  echo 'name="' . parsetoXML($row['name']) . '" ';
  echo 'address="' . parsetoXML($row['address']) . '" ';
  echo 'lat="' . $row['lat'] . '" ';
  echo 'lng="' . $row['lng'] . '" ';
  echo 'type="' . $row['type'] . '" ';
  echo '/>';
}

// End XML file
echo '</markers>';

?>

解决方法:

因此,如果要将数据从一个PHP文件传递到另一个PHP文件,在这种情况下,有两种选择:Cookies和Sessions:

曲奇饼:

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

会议:

//On page 1
$_SESSION['varname'] = $var_value;

//On page 2
$var_value = $_SESSION['varname'];

会话和cookie之间的最大区别在于,如果您使用会话,则变量的值将存储在服务器上;如果使用cookie,则变量的值将存储在客户端上.我想不出使用cookie代替会话的任何好理由,除非您希望数据在会话之间持久存在,但是即使那样,最好将其存储在数据库中,并根据用户名或id检索它.

编辑

支持一种方法,您可以在JQuery调用中传递该变量,如下所示:

在您的第一个文件中:

jQuery('#map').load('Firstfile.PHP?type=<?PHP echo($type);?>');

在第二个文件

$type = $_GET['type'];

试一试!!

Passing php variable from one file to another?引用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐