|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
PHP+MYSQL+GOOGLE MAP
ciao a tutti, sto sviluppando una app mashup per avere in una pagina php una mappa di google, un campo di testo, e un database.
l'idea è :ho un database di luoghi con le rispettive coordinate, inserisco il nome del luogo, es biblioteca centrale, nella pagina principale e lui mi rimanda una pagina in cui è presenta una api di google map con il luogo visualizzato sulla mappa. ho gia popolato il database, ho creato la pagina principale, e ho usato una echo per esportare in xml i risultati, pero non so fare la query.... vorrei che la query cercasse nel database il nome preciso, o l'indirizzo per poi restituire un xml che le api di google possano interpretare e mostrare sulla mappa... grazie a chi mi aiuterà |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ci vedo bene un full text search: http://dev.mysql.com/doc/refman/5.1/...xt-search.html
|
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
$query = "SELECT * FROM location WHERE MATCH location
-> AGAINST ('" + $_POST['from'] + "' IN BOOLEAN MODE);"; |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
cionci, innanzi tutto ti ringrazio per la tua disponibilità.... capisco che è una palla spiegare qualcosa a un novellino, ma per fortuna nei forum ci sono persone come te disposte ad aiutare.
ho inserito la query modificando i campi che riguardavano il mio db. ti posto il codice <?php require("resource.php"); function parseToXML($htmlStr) { $xmlStr=str_replace('<','<',$htmlStr); $xmlStr=str_replace('>','>',$xmlStr); $xmlStr=str_replace('"','"',$xmlStr); $xmlStr=str_replace("'",''',$xmlStr); $xmlStr=str_replace("&",'&',$xmlStr); return $xmlStr; } // Opens a connection to a mySQL server $connection=mysql_connect ($db_host, $db_user, $db_password); if (!$connection) { die('Not connected : ' . mysql_error()); } // Set the active mySQL database $db_selected = mysql_select_db($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 MATCH name -> AGAINST ('" + $_POST['index2'] + "' IN BOOLEAN MODE)"; $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>'; ?> pero quanto vado sul form e posto un nome mi da questo errore: Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1 da cosa puo dipendere? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi sono bevuto il cervello
![]() "SELECT * FROM markers WHERE MATCH name -> AGAINST ('".$_POST['index2']."' IN BOOLEAN MODE)"; |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
grazie cionci.... ma continua a dare errore di sintassi..... credo che ci siano problemi con il database perche anche se ho creato la tabella e l'indice full text quando provo a fare una query direttamente dal pannello di aruba mi dice che non c'è nessun indice creato....
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
niente non va.... mi potresti suggerireuna query semplice del tipo
select * from markers where (name) like ..... qui non so come richiamare il form nella pagina di inserimento... grazie |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che versione è il mysql di Aruba ?
Inoltre hai creato delle tabelle MyISAM o InnoDB, il full text search funziona solo con tabelle MyISAM. |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
Quote:
mi piacerebbe trovare queste info in quelche guida ma no ne ho trovata nessuna.... grazie e scusate... |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
"SELECT * FROM Tabella WHERE Luogo = '" . $_POST['luogo'] . "';"
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
grazie cionci, e dimmi in questo modo la query sa gia che il valore da ricercare si trova ed è inserito dall'utente nella pagina precedente?
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il vettore $_POST è un vettore associativo con, in corrispondenza del nome del campo del form, il valore inserito dall'utente.
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: May 2005
Messaggi: 39
|
ti ringrazio veramente tanto....ma purtroppo non sono riuscito ancora a ricavare niente da questa query
guarda questo è il codice della prima pagina, ossia quella con il campo form, che si chiama index2.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Ricerca Dipartimeni Home</title> <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAewK-imDclgeHvzhRCVp_eBQPRgDiN0y-2FDuYD51Yt3cl0T-PRQOg1VnJEU0Ebz130m_-0CDK0ciJg" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ function load() { if (GBrowserIsCompatible()) { // Crea mappa var map = new GMap2(document.getElementById("map")); // Imposta centro su Palermo (LAT 38.12, LONG 13.36) map.setCenter(new GLatLng(38.12, 13.36), 12); // Visualizza controlli - TIPO MAPPA map.addControl(new GMapTypeControl()); // Visualizza controlli - ZOOM GRANDE map.addControl(new GLargeMapControl()); // Apre Popup map.openInfoWindow(map.getCenter(), document.createTextNode("Palermo!")); } } //]]> </script> </head> <body onload="load()" onunload="GUnload()" style="font-family:Arial, Helvetica, sans-serif; font-size:13px; "> <h3>Ricerca dipartimenti -BETA- </h3> // qua è linkato a map2.php perche solo cosi si esportano i dati, a sua volta map2.php ha un codice che richiama result2.php <form method="post" action="map2.php"> <p class="head">Search</p> <input id="searchkeywords" type="text" name="keywords" > <input id="searchbutton" class="submit" type="submit" value="Search"> </p> </form> <div id="map" style="width: 468px; height: 360px"> </div> <p> </p> <p> </p> </body> </html> mentre questo è il codice della pagina result2.php che deve interrogare il database e esportare i risultati in xml <?php require("resource.php"); function parseToXML($htmlStr) { $xmlStr=str_replace('<','<',$htmlStr); $xmlStr=str_replace('>','>',$xmlStr); $xmlStr=str_replace('"','"',$xmlStr); $xmlStr=str_replace("'",''',$xmlStr); $xmlStr=str_replace("&",'&',$xmlStr); return $xmlStr; } // Opens a connection to a mySQL server $connection=mysql_connect ($db_host, $db_user, $db_password); if (!$connection) { die('Not connected : ' . mysql_error()); } // Set the active mySQL database $db_selected = mysql_select_db($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 ('name') like ('%$_POST[$index2]%') "; $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>'; ?> se vuoi puoi andare su http://www.miserendino.eu/index2.php ti renderai conto di come anche se inserisco il nome Dipartimento di Chimica, il database mi esce sempre tutti i record e non solo quello che ho ricercato. questo è il mio dilemma, e mi dispiace perche è un punto cruciale della mia tesi di laurea. grazie scusa se sono stato prolisso ma a questo punto dato che sono ad un vicolo cieco mi sembrava giusto darti un quadro completo. |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
$_POST['index2']
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:28.





















