Salve a tutti,
sono alle prese con un programmino che leggendo delle coordinate dal un db sqlite li mostri nella mia pagina web insieme alla mappa google.
Il problema, a quanto pare, sta nel fatto che non si riesce a popolare il db e non capisco per quale motivo.
Qualcuno potrebbe darmi una dritta?
La mia pagina html:
codice:
<html>
<head>
<title>GlobaliX GPRS</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<SCRIPT src="script/function.js"></SCRIPT>
<SCRIPT language="JavaScript" type="text/JavaScript">
var Timer;
//NOTE: https://developers.google.com/maps/documentation/imageapis/
//Visualizza mappa da google
function ShowMAP(latitude, longitude){
var Width = 640;
var Height = 640;
var GOOGLE_KEY = "AIzaSyDkK5hXflglDTRdRjed3cBtDc9t1EZ4ayM";
if((document.body.clientWidth < 640) && (document.body.clientHeight < 640)){
Width = document.body.clientWidth;
Height = document.body.clientHeight;
}
var IMMAGE = "<img src=http://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=17&size=" + Width + "x" + Height + "&maptype=mobile\&markers=" + latitude + "," + longitude + ",greeng&key=" + GOOGLE_KEY + "&sensor=false>";
document.getElementById('mainspan').innerHTML =IMMAGE;
return 0;
}
//Chiamata XML
function GetData() {
var ajax = startXMLHttpRequest();
if(ajax) {
ajax.onreadystatechange=function() {
if(ajax.readyState==4 && ajax.responseText!=null) {
//PARSER XML
try {
var nodes=ajax.responseXML.getElementsByTagName("ROOT");
var latitude = nodes[0].getElementsByTagName("LATITUDE")[0].firstChild.nodeValue;
var longitude = nodes[0].getElementsByTagName("LONGITUDE")[0].firstChild.nodeValue;
ShowMAP(latitude, longitude);
HTML="<table>" +
"<tr><td>Latitudine:</td><td><b>" + latitude + "</b></td></tr>" +
"<tr><td>Longitudine:</td><td><b>" + longitude + "</b></td></tr>" +
"</table>";
document.getElementById('infospan').innerHTML =HTML;
} catch (e) {
HTML="<br><br><br><p class=error align=center>Struttura XML non valida o nessun dato presente nel database</p>";
document.getElementById('infospan').innerHTML = HTML;
document.getElementById('mainspan').innerHTML = "";
}
}
}
try {
var par = "XML=get&R=" + encodeURI(encodeURI(Math.random()));
ajax.open("POST", "./index.php", true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.send(par);
} catch (e) {
document.getElementById('mainspan').innerHTML ="<br><br><br><p class=error align=center><img src=warning.gif><br><br>Errore<br>Pagina " + page + " non trovata sul server</p>";
}
Timer = setTimeout('GetData()',20000);
}
}
</SCRIPT>
</head>
<BODY onLoad='GetData();'>
<center>
<b>GlobaliX by Area SX S.r.l.<b><br>
<div id=mainspan>
</div>
<div id=infospan></div>
</center>
</BODY>
</html>
la mia pagina php:
codice:
<?php
include "sqlite.inc.php";
//Gestione DB SQLITE
$db1=new sqlite();
$db1->db_file="globalix.sqlite";
$db1->db_debug=0;
$res = $db1->sqlite_open();
$query = "CREATE TABLE globalix (id INTEGER PRIMARY KEY, latitudine VARCHAR(10), longitudine VARCHAR(10));";
$res = $db1->sqlite_query($query);
//Salva le informazioni nel database
$latitudine= "4153.2095";
$longitudine = "01228.0818";
$query = "INSERT INTO globalix VALUES (1,'$latitudine','$longitudine')";
$res = $db1->sqlite_query($query);
if($res)
echo "1,20,0";
else
echo "0,0,0";
return(0);
// }
//Genera XML
if(!empty($_REQUEST[XML]) && $_REQUEST[XML]=="get"){
header("Content-type: text/xml");
header("Content-disposition: filename=index.xml");
header("Pragma: no-cache");
header("Expires: 0");
print"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
//Ricavo l'ultima coordinata inserita:
$query = "SELECT * FROM globalix ORDER BY id DESC LIMIT 1";
$res = $db1->sqlite_query($query);
echo "<ROOT>";
if(sqlite_num_rows ($db1->query_return)>0){
$rec = sqlite_fetch_array ($db1->query_return);
//Ricavo la latitudine
$latitude =(int)substr($latitudine,0,2) + (float)(substr($latitudine,2,7)) / 60; //Latitudine
$latitude = substr($latitude,0,9);
//Ricavo la longitudine
$longitude =(int)substr($longitudine,1,2) + (float)(substr($longitudine,3,7)) / 60; //Longitudine
$longitude = substr($longitude,0,9);
echo "<LATITUDE>" . $latitude . "</LATITUDE>";
echo "<LONGITUDE>" . $longitude . "</LONGITUDE>";
echo "</ROOT>";
} else {
echo "<ERROR>0</ERROR>";
echo "</ROOT>";
}
return 0;
}
?>
il file sqlite.inc.php:
codice:
<?php
class sqlite {
public $db_file = "sqlite.db";
public $db_debug = 0;
public $db_permission = 0666;
//Instaura una connessione con il DB
public function sqlite_open(){
$this->db_id = @sqlite_open($this->db_file, $this->db_permission, $sqlite_error);
if(!$this->db_id) {
if($this->db_debug) echo "Errore Sqlite: " . $sqliteerror . "<br>";
return 0;
}
return 1;
}
//Esegue una Query
public function sqlite_query($query){
$this->query_return = @sqlite_query($this->db_id, $query);
if(!$this->query_return){
if($this->db_debug) echo "Errore Sqlite: " . sqlite_error_string(sqlite_last_error($this->db_id)) . "<br>";
return 0;
}
return 1;
}
//Termina connessione con DB
public function sqlite_close(){
@sqlite_close($this->db_id);
return 1;
}
//Estrae l'ultimo ID inserito
public function sqlite_lastid(){
$ret=@sqlite_last_insert_rowid($this->db_id);
if($ret) return $ret;
return 0;
}
}
?>