Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114

    Store Locator con PHP, MySQL & Google Maps

    Essendo abbastanza impreparato, sto provando ad esercitarmi con questa guida:

    Creating a Store Locator with PHP, MySQL & Google Maps
    http://code.google.com/apis/maps/art...sqlsearch.html

    Ho creato il database mysql, e popolato la tabella, poi ho messo sul server il file di connessione: phpsqlsearch_dbinfo.php

    codice:
    <?
    $username="username";
    $password="password";
    $database="username-databaseName";
    ?>
    e il file phpsqlsearch_genxml.php


    codice:
    <?php  
    require("phpsqlsearch_dbinfo.php");
    
    // Get parameters from URL
    $center_lat = $_GET["lat"];
    $center_lng = $_GET["lng"];
    $radius = $_GET["radius"];
    
    // Start XML file, create parent node
    $dom = new DOMDocument("1.0");
    $node = $dom->createElement("markers");
    $parnode = $dom->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());
    }
    
    // Search the rows in the markers table
    $query = sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
      mysql_real_escape_string($center_lat),
      mysql_real_escape_string($center_lng),
      mysql_real_escape_string($center_lat),
      mysql_real_escape_string($radius));
    $result = mysql_query($query);
    
    $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)){
      $node = $dom->createElement("marker");
      $newnode = $parnode->appendChild($node);
      $newnode->setAttribute("name", $row['name']);
      $newnode->setAttribute("address", $row['address']);
      $newnode->setAttribute("lat", $row['lat']);
      $newnode->setAttribute("lng", $row['lng']);
      $newnode->setAttribute("distance", $row['distance']);
    }
    
    echo $dom->saveXML();
    ?>

    Poi mi si consiglia di provare l'output xml richiamando il file, e questo è il risultato:

    codice:
    Errore interpretazione XML: errore di sintassi
    Indirizzo: http://www.xxx.xxx/storelocator/phpsqlsearch_genxml.php
    Linea numero 1, colonna 1:Not connected : Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    ^
    è evidente che non riesco a collegarmi al database, che è su mysql.netsons.com
    Potete darmi una dritta per riuscire a collegarmi :-)

    Grazie!!
    Ciao
    xGioweb

  2. #2
    Ciao,


    ma quando fai

    $connection=mysql_connect (localhost, $username, $password);

    metti il localhost giusto o scrivi proprio così come hai scritto??

  3. #3
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    adesso che mi ci fai pensare avevo lasciato localhost ma avevo anche provato mysql.netsons.com ma senza virgolette e non funzionava.

    codice:
    $connection=mysql_connect ("mysql.netsons.com", $username, $password);
    Adesso ho messo le virgolette, l'errore non c'è più ma del file xml a video si vede solo:

    codice:
    Il file XML specificato apparentemente non ha un foglio di stile associato. L'albero del documento è mostrato di seguito.
    
    <markers/>
    in pratica c'è solo la chiusura del file...
    Ciao
    xGioweb

  4. #4
    è chiaro che se fai echo di un xml vedi poco o niente a video.

    fatti scrivere l'output in un file non a video (oppure al limite vai a leggere il sorgente html della pagina dove vedi solo <markers/>)

  5. #5
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    vai a leggere il sorgente html della pagina dove vedi solo <markers/>)
    non cambia, il sorgente è questo:

    codice:
    <?xml version="1.0"?>
    <markers/>
    Ciao
    xGioweb

  6. #6
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    praticamente ho solo la prima e l'ultima riga di quello che dice la guida:

    codice:
    <?xml version="1.0"?>
    <markers><marker name="Round Table Pizza: Mountain View" address="570 N Shoreline Blvd, Mountain View, CA" lat="37.402653" lng="-122.079353" distance="0.38091455044131"/>
    <marker name="Kapp's Pizza Bar & Grill" address="191 Castro St, Mountain
         View, CA" lat="37.393887" lng="-122.078918" distance="0.5596115438175"/>
    <marker name="Amici's East Coast Pizzeria" address="790 Castro St, Mountain View, CA" lat="37.387138" lng="-122.083237" distance="1.0796074495809"/>
    <marker name="Frankie Johnnie & Luigo Too" address="939 W El Camino Real, Mountain View, CA" lat="37.386337" lng="-122.085823" distance="1.2044231336188"/>
    <marker name="Tony & Alba's Pizza & Pasta" address="619 Escuela Ave, Mountain View, CA" lat="37.394012" lng="-122.095528" distance="1.3156538737837"/><marker name="Round Table Pizza: Sunnyvale-Mary-Central Expy" address="415 N Mary Ave, Sunnyvale, CA" lat="37.390038" lng="-122.042030" distance="1.84565061776"/>
    <marker name="Oregano's Wood-Fired Pizza" address="4546 El Camino Real, Los Altos, CA" lat="37.401726" lng="-122.114647" distance="2.2887425990519"/>
    ...
    </markers>
    Ciao
    xGioweb

  7. #7
    probabilmente la query restitusce 0 righe...

    fatti stampare
    mysql_num_rows ()

    Codice PHP:
    // Search the rows in the markers table
    $query sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
      
    mysql_real_escape_string($center_lat),
      
    mysql_real_escape_string($center_lng),
      
    mysql_real_escape_string($center_lat),
      
    mysql_real_escape_string($radius));
    $result mysql_query($query);
    echo 
    '
    righe='
    .mysql_num_rows ().'
    '

    se è 0 porbabilmente vuol dire che la base dati che non è più congruente con quella dell'esempio

  8. #8
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    il risultato è vuoto, per incongruenza intendi che ci possono essere degli errori nella tabella?
    La struttura è molto semplice, non so dove potrebbe nascondersi l'errore... questpo è un dump del db.

    codice:
    -- phpMyAdmin SQL Dump
    -- version 3.4.7.1
    -- http://www.phpmyadmin.net
    --
    -- Host: mysql.netsons.com
    -- Generato il: Dic 09, 2011 alle 20:52
    -- Versione del server: 5.1.60
    -- Versione PHP: 5.2.6
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    --
    -- Database: `xxx_store`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `markers`
    --
    
    CREATE TABLE IF NOT EXISTS `markers` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(60) NOT NULL,
      `address` varchar(80) NOT NULL,
      `lat` float(10,6) NOT NULL,
      `lng` float(10,6) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7;
    
    --
    -- Dump dei dati per la tabella `markers`
    --
    
    INSERT DELAYED IGNORE INTO `markers` (`id`, `name`, `address`, `lat`, `lng`) VALUES
    (1, 'Frankie Johnnie & Luigo Too', '939 W El Camino Real, Mountain View, CA', 37.386337, -122.085823),
    (2, 'Amici''s East Coast Pizzeria', '790 Castro St, Mountain View, CA', 37.387138, -122.083237),
    (3, 'Kapp''s Pizza Bar & Grill', '191 Castro St, Mountain View, CA', 37.393887, -122.078918),
    (4, 'Round Table Pizza: Mountain View', '570 N Shoreline Blvd, Mountain View, CA', 37.402653, -122.079353),
    (5, 'Tony & Alba''s Pizza & Pasta', '619 Escuela Ave, Mountain View, CA', 37.394012, -122.095528),
    (6, 'Oregano''s Wood-Fired Pizza', '4546 El Camino Real, Los Altos, CA', 37.401726, -122.114647);
    grazie dell'aiuto che mi stai dando
    Ciao
    xGioweb

  9. #9
    Allora,

    io non credo che ci sia un errore nella tabella...

    però se quando filtri la tabella per i valori di $center_lat, $center_lng, $center_lat, $radius non estrai nessun valore, le possibili fonti di problemi sono tre:

    1. $center_lat, $centerlng, ecc. non sono inzializzati correttamente

    Quindi: controlla bene cosa ti viene passato con
    $center_lat = $_GET["lat"]; ecc.
    fatteli stampare a video: è proprio quello che ti aspetti? sono corretti?

    2. La query non fa il suo dovere
    Quindi: assicurati che la query si corretta.
    Magari fai una banale
    "SELECT address, name, lat, lng, 999 AS distance FROM markers"
    e vedi se così funziona e se ti riempie l'XML

    3. E' tutto giusto ma i dati che cerchi non ci sono in tabella
    Quindi controlla che i dati effettivamente esistano markers con radius<$radius

    ****EDIT
    dimenticavo per prima cosa fatti stampare anche mysql_error() subito dopo la query che stai facendo magari già da lì vedi se è giusta

  10. #10
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    La notte porta consiglio! allora, la base dati era ok e con dati, ho trovato la soluzione qui:
    http://code.google.com/apis/maps/art...html#outputxml

    Ho utilizzato il codice del terzo esempio, i due precedenti invece non mi funzionavano.

    http://gmaps-samples.googlecode.com/...ax_genxml3.php

    codice:
    <?php
    require("phpsqlajax_dbinfo.php");
    
    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";
    $result = mysql_query($query);
    if (!$result) {
      die('Invalid query: ' . 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>';
    
    ?>
    adesso il file xml si genera correttamente!!!

    Grazie philbert!!! Adesso passo allo step successivo! La visualizzazione della mappa
    Ciao
    xGioweb

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.