2010-03-18 132 views
1

更新2:所以我从来没有在萤火虫中使用过调试功能,但我只是看了脚本部分,我明白了,现在我会试着解决这个问题。在谷歌地图上使用PHP/MySQL

无法加载来源: http://localhost/googleMap/phpsqlajax_genxml.php

你好,

我跟着下面 http://code.google.com/apis/maps/articles/phpsqlajax_v3.html#outputxml

本教程中,我遇到了麻烦,近则结束了,我希望有人否则这里有 得到了这个工作,并可以帮助我发现我的问题。只要有4个 步骤,本教程

  • 创建表
  • 填写表
  • 1.4.3 XML与PHP
  • 创建地图

我顺利地完成了所有步骤,但是输出的xml 未被我创建的谷歌地图读取。这些文件都在同一个 目录中,我没有更改 教程中的任何文件名。本教程有一个台阶,以测试PHP文件名为 phpsqlajax_genxml.php是输出XML和我测试成功 它,它是。

问题是,地图不是呈现我在 数据库中的项目,应将其转换为xml供地图读取。

任何帮助,或者指着我在正确的方向会更 赞赏。

UPDATE 1:我意识到我没有任何代码显示在这里,只有3个文件,所以我不确定哪个最好用。我有一个问题,但可能会帮助我的问题。

在教程的XML输出部分,我问过

调用此PHP脚本从浏览器 ,以确保它产生有效的XML。 如果您怀疑与 问题连接到数据库,你可以 找到,如果你删除 文件中的 头设置为文本/ xml内容类型的行更容易调试, 为通常会导致你的浏览器到 尝试解析XML,并可能使其难以看到您的调试 消息 。

这是phpsqlajax_dbinfo。PHP文件

<?php 
$username="root"; 
$password="root"; 
$database="root-googleMap"; 
?> 

这是生成XML的代码,是后曾作过一个XML文档,我可以打开,或者是暂时的转换。如果是的话,我如何做上面的步骤来测试,我真的不明白。

<?php 
require("phpsqlajax_dbinfo.php"); 

// Start XML file, create parent node 
$doc = domxml_new_doc("1.0"); 
$node = $doc->create_element("markers"); 
$parnode = $doc->append_child($node); 

// 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"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

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

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    $node = $doc->create_element("marker"); 
    $newnode = $parnode->append_child($node); 

    $newnode->set_attribute("name", $row['name']); 
    $newnode->set_attribute("address", $row['address']); 
    $newnode->set_attribute("lat", $row['lat']); 
    $newnode->set_attribute("lng", $row['lng']); 
    $newnode->set_attribute("type", $row['type']); 
} 

$xmlfile = $doc->dump_mem(); 
echo $xmlfile; 

?> 

回答

3

我假设(和希望)你不使用PHP 4和了,这是你的问题的根源,涉及到DOM处理XML的功能已经被替换为DOM文档类,有不同的方法名称。

因此,我已经重构你的代码是用PHP 5兼容:

<?php 
require("phpsqlajax_dbinfo.php"); 

// Start XML file, create parent node 
$doc = new DOMDocument("1.0"); 
$node = $doc->createElement("markers"); 
$parnode = $doc->appendChild($node); 

// 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"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

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

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    $node = $doc->createElement("marker"); 
    $newnode = $parnode->appendChild($node); 

    $newnode->set_attribute("name", $row['name']); 
    $newnode->set_attribute("address", $row['address']); 
    $newnode->set_attribute("lat", $row['lat']); 
    $newnode->set_attribute("lng", $row['lng']); 
    $newnode->set_attribute("type", $row['type']); 
} 

echo $doc->saveXML(); 

?> 
+0

感谢安德烈的代码。有几点需要指出,mysql_connect之后有一个空格,它也应该通过'localhost'。继续在第37行,set_attribute应该是setAttribute。 这将运行。再次谢谢你。我正在像OP一样学习Google Maps API,并通过Google发现了这一点。 :3他们应该真的更新原来的帖子! – r109 2013-03-21 01:39:09