Visualizzazione risultati 1 fino 3 di 3

Discussione: Database Javascript+html5: ci sono restrinzioni sui campi?

  1. #1
    Guest

    Predefinito Database Javascript+html5: ci sono restrinzioni sui campi?

    Ciao a tutti ragazzi,

    Sto sperimentando qualche funzione javascript+HTML5, ed in particolare l'opendatabase e la gestione dei database in locale.

    Ho creato, prendendo spunto da un codice sul web, questo script:

    Codice HTML:
    <html>
    <head>
    
    </head>
    <body>
    <script type="text/javascript">
    var db = openDatabase('dbp', '1.0', 'persone', 2 * 1024 * 1024);
    var msg;
    db.transaction(function (tx) {
      tx.executeSql('CREATE TABLE IF NOT EXISTS pers (num INT unique,num2 INT,nome TEXT,cognome TEXT,t2 TEXT)');
    
    tx.executeSql("INSERT INTO pers VALUES (1,32,'pippo','pipino','veneto')");
    
    
      msg = '<p>Inserito.</p>';
      document.querySelector('#status').innerHTML =  msg;
    });
    
    db.transaction(function (tx) {
      tx.executeSql('SELECT * FROM pers', [], function (tx, results) {
       var len = results.rows.length, i;
       msg = "<p>Trovati " + len + " risiultati.</p>";
       document.querySelector('#status').innerHTML +=  msg;
       for (i = 0; i < len; i++){
         msg = "<b>" + results.rows.item(i).num + "</b> " + results.rows.item(i).nome + "<br>";
         document.querySelector('#status').innerHTML +=  msg;
       }
     }, null);
    });
    </script>
    <div id="status" name="status">Status Message</div>
    </body>
    </html>
    Che in effetti funziona. Ma se metto più campi nella tabella, non funziona più. Esempio, sostituendo:

    Codice HTML:
      tx.executeSql('CREATE TABLE IF NOT EXISTS pers (num INT unique,num2 INT,nome TEXT,cognome TEXT,t2 TEXT)');
    
    tx.executeSql("INSERT INTO pers VALUES (1,32,'pippo','pipino','veneto')");
    con:

    Codice HTML:
      tx.executeSql('CREATE TABLE IF NOT EXISTS pers (num INT unique,num2 INT,nome TEXT,cognome TEXT,t2 TEXT,citta TEXT,paese TEXT,numero INT,cap INT,anni INT,cell INT,casa TEXT,figli INT,abitanti INT,nomea TEXT,ciccio TEXT,pasticcio INT,tizio TEXT,caio TEXT)');
    
    tx.executeSql("INSERT INTO pers VALUES (1,32,'pippo','pipino','veneto','venezia',668,30254,65,3568465125,'0545168465',2,5,'cacasa','rullo',23,'compressore','funge')");
    Non visualizza nessun risultato. E' presente qualche limitazione nel numero dei campi? Perchè a me ne servirebbero 22...di cui 3 che possono essere parecchio lunghi.

    Grazie 1000 e buona giornata.

    PS: non sono proprio nuovo, ho un altro account di un altro sito, per questo non mi sono presentato ;)

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Purtroppo ancora questa cosa del database locale non l'ho potuta provare per mancanza di tempo. Quindi non son sicuro di quello che dico.

    Guardando quello che hai sostituito, prima di fare:

    Codice:
    tx.executeSql('CREATE TABLE IF NOT EXISTS pers (num INT unique,num2 INT,nome TEXT,cognome TEXT,t2 TEXT,citta TEXT,paese TEXT,numero INT,cap INT,anni INT,cell INT,casa TEXT,figli INT,abitanti INT,nomea TEXT,ciccio TEXT,pasticcio INT,tizio TEXT,caio TEXT)');
    Hai provato a eliminare la tabella pers? Altrimenti la tabella esiste (quella vecchia) e quindi non dovrebbe creare quella nuova (IF NOT EXISTS)...

    Ciao!
    Ultima modifica di alemoppo : 25-07-2011 alle ore 13.18.53

  3. #3
    Guest

    Predefinito

    Grandissimo! Avevo provato però a eliminare le tabelle memorizzate tramite le impostazioni di Safari...pensavo fosse la stessa cosa!

    Comunque ecco quel che volevo fare, ma che continua a non funzionare:

    Codice HTML:
    var db = openDatabase('dbp', '1.0', 'pokemon', 2 * 1024 * 1024);
    var msg;
    db.transaction(function (tx) {
      tx.executeSql('DROP TABLE pokemon');
      tx.executeSql('CREATE TABLE IF NOT EXISTS pokemon (num INT unique,numn INT,nome TEXT,t1 TEXT,t2 TEXT,evhp INT,evatk INT,evdef INT,evatksp INT,evdefsp INT,evspeed INT,hp INT,atk INT,def INT,atksp INT,defsp INT,speed INT,evolvein TEXT,lv TEXT,resistentea TEXT,debolea TEXT,incolumea TEXT)');
      
      
    	
    	tx.executeSql("INSERT INTO pokemon VALUES (	1,	1,\"Bulbasaur\",	\"grass\",	\"poison \",	0,	0,	0,	1,	0,	0,	45,	49,	49,	65,	65,	45,	Ivysaur,	\"16\",	\"<img src='t/flying.png'/>, <img src='t/fire.png'/>, <img src='t/psychic.png'/>, <img src='t/ice.png'/>\",	\"<img src='t/fighting.png'/>, <img src='t/water.png'/>, <img src='t/electric.png'/>, <img src='t/grass.png'/>\",	\"\"");
    	
    		
    	tx.executeSql("INSERT INTO pokemon VALUES (	2,	2,\"Ivysaur\",	\"grass\",	\"poison \",	0,	0,	0,	1,	1,	0,	60,	62,	63,	80,	80,	60,	Venusaur,	\"32\",	\"<img src='t/flying.png'/>, <img src='t/fire.png'/>, <img src='t/psychic.png'/>, <img src='t/ice.png'/>\",	\"<img src='t/fighting.png'/>, <img src='t/water.png'/>, <img src='t/electric.png'/>, <img src='t/grass.png'/>\",	\"\"");
    	
    		
    	tx.executeSql("INSERT INTO pokemon VALUES (	3,	3,\"Venusaur\",	\"grass\",	\"poison \",	0,	0,	0,	2,	1,	0,	80,	82,	83,	100,	100,	80,	,	\"0\",	\"<img src='t/flying.png'/>, <img src='t/fire.png'/>, <img src='t/psychic.png'/>, <img src='t/ice.png'/>\",	\"<img src='t/fighting.png'/>, <img src='t/water.png'/>, <img src='t/electric.png'/>, <img src='t/grass.png'/>\",	\"\"");
    	
    Ovviamente son solo 3 ma ne ho 649 da inserire nel database (li ho già tutti pronti ma di certo non posto 649 elementi, non avrebbe alcun senso).

    Questo codice non produce nulla, mi da solo la conferma dell'inserimento ma se faccio una query non mi da risultati :S E non riesco a capire dov'è che pecca!

    EDIT:
    il codice per stampare è questo:

    Codice HTML:
    db.transaction(function (tx) {
      tx.executeSql('SELECT * FROM pokemon', [], function (tx, results) {
       var len = results.rows.length, i;
       msg = "<p>Trovati " + len + " risiultati.</p>";
       document.querySelector('#status').innerHTML +=  msg;
       for (i = 0; i < len; i++){
         msg = "<p><b>" + results.rows.item(i).numn + "</b></p>";
         document.querySelector('#status').innerHTML +=  msg;
       }
     }, null);
    });
    Ultima modifica di stefanoandreetta : 25-07-2011 alle ore 14.26.30 Motivo: aggiunta dettagli

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •