Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    144

    interfacciare php con sqlite

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

  2. #2
    Inizia a togliere le chiocciole ( @ ) che ci sono davanti alle funzioni sqlite e vedrai che ti restituirà qualche errore.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    144
    ok ottengo il seguente errore
    Fatal error: Call to undefined function sqlite_open()...
    quindi abilito le due estensioni
    codice:
    extension=php_pdo.dll 
    extension=php_sqlite.dll
    nel php.ini
    ma non solo l'errore non sparisce, se riavvio Apache ottengo il seguente warning:
    PHP Startup: PDO: Unable to initialize module
    Module compiled with module API= 20050922
    PHP compiled with module API= 20121212
    These options need to match
    .

    Girando tra i forum ho potuto capire che questi sono problemi di configurazione/installazione di sqlite ma a questo punto non so che altro provare

    ps: come mai con le @ non mi dava errori?

  4. #4
    La @ serve a sopprimere gli eventuali errori.

    L'indicazione è lampante... che versione di php usi ?
    la libreria php_sqlite.dll è effettivamente presente ??
    Pdo puoi anche non abilitarla.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    144
    La versione è la 5.5 e la libreria php_sqlite.dll è presente nel path php/ext. Preciso che tale libreria è stata scaricata da un sito che non è quello ufficiale

  6. #6
    Quote Originariamente inviata da mbistato Visualizza il messaggio
    Preciso che tale libreria è stata scaricata da un sito che non è quello ufficiale
    Why ?? Quella ufficiale era gratis uguale..

    L'errore che ti dava apache era relativo alla libreria pdo.
    Forse manca quella (tra l'altro non necessaria per il tuo scopo) o la versione della libreria non è corretta per la versione di php che usi.

    Tra parentesi... la libreria php_pdo.dll per php 5.5 non esiste (è roba delle vecchie versioni adesso ci sono le pdo specifiche per ogni database).. e la libreria sqlite è php_sqlite3.dll
    Il tuo script è un po' datato e usa la versione 2 di sqlite.. ma credo che funzioni ugualmente con la versione 3.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    144
    Quote Originariamente inviata da W Thunderbird Visualizza il messaggio
    Why ?? Quella ufficiale era gratis uguale..
    nel sito ufficiale ho trovato solo la sqlite3.dll

    L'errore che ti dava apache era relativo alla libreria pdo.
    Forse manca quella (tra l'altro non necessaria per il tuo scopo) o la versione della libreria non è corretta per la versione di php che usi.
    Tra parentesi... la libreria php_pdo.dll per php 5.5 non esiste (è roba delle vecchie versioni adesso ci sono le pdo specifiche per ogni database).. e la libreria sqlite è php_sqlite3.dll
    Ho provato comunque ad abilitare la libreria php_pdo.dll ma apache mi ritorna lo stesso errore.

    Il tuo script è un po' datato e usa la versione 2 di sqlite.. ma credo che funzioni ugualmente con la versione 3.
    Ho usato la funzione sqlite3_open (penso che sia quella della versione 3) ma nemmeno questa mi viene riconosciuta.

    Cosa mi consigli di fare?

  8. #8
    Quote Originariamente inviata da mbistato Visualizza il messaggio
    nel sito ufficiale ho trovato solo la sqlite3.dll
    Esiste solo quella versione per php 5.5... se hai trovato php_sqlite.dll è una versione vecchia, non adatta a php 5.5

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    144
    ma io ho già la libreria php_sqlite3.dll inclusa tra le estensioni, quindi non necessito di scaricarla dal sito... corretto?

  10. #10
    Quote Originariamente inviata da mbistato Visualizza il messaggio
    ma io ho già la libreria php_sqlite3.dll inclusa tra le estensioni, quindi non necessito di scaricarla dal sito... corretto?
    Controlla se c'è il file nella cartella /ext e poi includila in php.ini

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.