2010-03-18 9 views
1

Mise à jour 2: Donc, je n'ai jamais utilisé la fonction de débogage dans firebug, mais j'ai juste regardé la section de script et je comprends, maintenant je vais essayer de comprendre cela.Utiliser PHP/MySQL avec Google Maps

Impossible de charger source: http://localhost/googleMap/phpsqlajax_genxml.php

Hiya,

J'ai suivi ce tutoriel ci-dessous http://code.google.com/apis/maps/articles/phpsqlajax_v3.html#outputxml

J'ai couru en difficulté, près de la fin, j'espère que quelqu'un d'autre ici a obtenu ce travail et peut m'aider à découvrir mon problème. Tout simplement il y a 4 étapes à ce tutoriel

  • Création de la table
  • peuplant le tableau
  • fournir en sortie XML avec PHP
  • Création de la carte

J'ai terminé avec succès toutes les étapes , cependant le xml produit n'est pas lu par la carte google que j'ai créée. Les fichiers sont tous sur le même répertoire , et je n'ai pas changé l'un des noms de fichiers du tutoriel . Le tutoriel a une étape pour tester si le fichier php appelé phpsqlajax_genxml.php sort le xml et j'ai testé avec succès et il était.

Le problème est que la carte ne rend pas les éléments que j'ai dans la base de données , qui devrait être converti en xml pour la carte à lire.

Toute aide, ou me pointant dans la bonne direction serait beaucoup apprécié.

MISE À JOUR 1: Je me rends compte que je n'ai aucun code à montrer ici, il y a seulement 3 fichiers, donc je ne suis pas sûr de ce qui sera le plus utile. J'ai une question qui pourrait aider mon problème cependant.

Dans la partie de sortie xml du tutoriel, je me demande aussi

Appelez ce script PHP à partir du navigateur pour vous assurer qu'il est la production de XML valide. Si vous pensez qu'il ya un problème avec la connexion à votre base de données, vous pouvez trouver plus facile à déboguer si vous supprimez la ligne dans le fichier qui définit l'en-tête du type text/contenu XML, comme cela provoque généralement votre navigateur à essayer d'analyser XML et peut faire difficile de voir vos messages de débogage.

Ceci est le phpsqlajax_dbinfo.fichier php

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

Voici le code pour le générer xml, est un document xml effectivement fait après et puis-je ouvrir, ou est-il la conversion temporaire. Si oui, comment puis-je faire l'étape ci-dessus pour tester, je ne comprends pas vraiment.

<?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; 

?> 

Répondre

3

Je suppose (et en espérant) que vous n'utilisez PHP 4 plus et que c'est la source de votre problème, les fonctions relatives à la manipulation XML DOM ont été remplacés par la classe DOMDocument, qui a différents noms de méthodes.

En tant que tel, je refondus votre code pour être compatible avec 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

Merci André pour le code. Quelques points à signaler, il y a un espace après mysql_connect, il faut aussi passer 'localhost'. En continuant sur la ligne 37, set_attribute devrait être setAttribute. Cela fonctionnera. Encore merci. J'apprends l'API Google Maps comme OP et je l'ai trouvée via Google. : 3 Ils devraient vraiment mettre à jour le message original! – r109