PDA

View Full Version : [HTML/SQL] Creazione database "locale"


manuel17787
04-11-2010, 18:27
Ciao a tutti!
E' possibile scrivere una pagina web (scritta in HTML/Javascript) che crei un database SQL ed esegua query sul database in "locale"?

manuel17787
05-11-2010, 13:08
Provo a rispondermi da solo.. usando html5?

alemoppo
05-11-2010, 13:19
no...

per creare un database, devi avere un database :-D.. mi spiego meglio:

Nei vari hosting, sono installati (normalmente) Apache e ad esempio mysql.

Apache si occupa di coordinare "il flusso HTML" e, se lo aggiungi, PHP; mentre mysql si occupa del database.

Con html o javascript non puoi accedere al server... non puoi modificare cose sui server.
Se vuoi quindi farti una pagina locale, dovresti installarti sul tuo PC un qualcosa che ti emuli un server: apache + PHP + mysql. Se cerchi, c'é una guida su html.it su questo.

Però io a suo tempo non ero riuscito a far funzionare a dovere mysql... mi funzionava soltanto apache+PHP (seguendo la guida html.it).
Quindi adesso sto utilizzando programmi che installano il tutto da soli. Quindi prova EasyPHP (http://www.easyphp.org/);-)

Ciao!

manuel17787
05-11-2010, 13:51
Forse non sono riuscito a spiegare bene quello che vorrei fare :D
Io creo una pagina html e la metto da qualche parte in un server. L'utente accede alla pagina dal suo pc ed interagisce con essa.
Quello di cui avrei bisogno è che la pagina riesca a creare un database locale nel pc dell'utente (senza che nel pc dell'utente ci sia installato un server).

alemoppo
06-11-2010, 15:35
non credo si possa fare.. cioè se un sito avesse il potere di creare file nel PC degli utenti, gli utenti avrebbero sempre gli HDD pieni :D


...ma perché non puoi salvare i dati sul server?

Ciao!

manuel17787
07-11-2010, 14:19
Alla fine sono arrivato da solo alla risposta, HTML5 dà la possibilità di creare un database sqlite nel client. Ovviamente il client può decidere una quota massima da destinare a questi dati..
Per ora supportano questa funzionalità solo Google Chrome e Safari ;)

alemoppo
07-11-2010, 15:37
Alla fine sono arrivato da solo alla risposta, HTML5 dà la possibilità di creare un database sqlite nel client. Ovviamente il client può decidere una quota massima da destinare a questi dati..
Per ora supportano questa funzionalità solo Google Chrome e Safari ;)

Fantastico!

...mi scuso per il fatto di non esserti stato d'aiuto :doh:

ma ho imparato una cosa utilissima!! :D

...poi quando mi servirà ne terrò conto... se è vera, è una cosa utilissima!!

Grazie

ciao!

tomminno
07-11-2010, 20:37
Ciao a tutti!
E' possibile scrivere una pagina web (scritta in HTML/Javascript) che crei un database SQL ed esegua query sul database in "locale"?

Scusa la curiosità: a che servirebbe tutto questo?
Ammesso di avere il supporto ad Html5 (e non si può certo partire dal presupposto che tutti gli utenti lo abbiano), te dovresti scrivere una pagina che, la prima volta, crea il db e comincia a riempirlo, ma non puoi essere certo che il database sia presente ad un secondo caricamento, in quanto potrebbe essere stato cancellato dall'utente.

manuel17787
07-11-2010, 21:30
Scusa la curiosità: a che servirebbe tutto questo?

Potrebbe tornare utile in caso serva un database temporaneo su cui salvare/prelevare dei dati, oppure per consentire all'utente di accedere a tali dati anche se disconnesso da internet..

Ammesso di avere il supporto ad Html5 (e non si può certo partire dal presupposto che tutti gli utenti lo abbiano)

Prima o poi tutti i browser supporteranno a pieno html5, penso sia solo questione di tempo e anche firefox e IE si adegueranno ;)

te dovresti scrivere una pagina che, la prima volta, crea il db e comincia a riempirlo, ma non puoi essere certo che il database sia presente ad un secondo caricamento, in quanto potrebbe essere stato cancellato dall'utente.

si ovvio che dovrebbero essere fatti questi controlli, se il database non c'è dovrebbe essere ricreato.
C'è da dire che in questo db locale non verranno salvati dati "utili" al server, ma utili al client, per cui se li cancella significa che non gli servono..
Un esempio che mi viene in mente potrebbe essere un blocco appunti virtuale in cui l'utente ci può scrivere quello che vuole e quando ritorna nel sito ritrova il blocco appunti con le stesse cose che aveva scritto.
Questi potrebbero essere dei dati che avrebbe senso salvare nel client, piuttosto che nel server ;)

alemoppo
08-11-2010, 00:37
Scusate.. pensandoci un pò, questo fatto mi sembra un "doppione" dei cookie... cioè alla fine non non son altro che dei cookie!.... Tutto quello che si può fare con questo database, si poteva (e si può) fare con i cookie... giusto?

Ciao!

tomminno
08-11-2010, 00:39
Scusate.. pensandoci un pò, questo fatto mi sembra un "doppione" dei cookie... cioè alla fine non non son altro che dei cookie!.... Tutto quello che si può fare con questo database, si poteva (e si può) fare con i cookie... giusto?

Ciao!

La differenza è che i cookie sono al massimo 4k, lo web storage arriva a 5Mb

tomminno
08-11-2010, 00:51
Potrebbe tornare utile in caso serva un database temporaneo su cui salvare/prelevare dei dati, oppure per consentire all'utente di accedere a tali dati anche se disconnesso da internet..


Difficile che l'utente abbia un Sqlite manager per aprire il file, oltretutto non è detto che il nome sia in chiaro o che l'accesso non sia protetto da password.
E se l'utente non è connesso non può navigare la pagina, dovrebbe salvarla in locale, ma, e qui non so come funzioni, il browser consentirà ugualmente l'accesso al db se la pagina non proviene dallo stesso dominio che lo ha generato? Perchè se non fosse così ci sarebbero delle falle di sicurezza macroscopiche. Ma credo che il tutto funzioni come i cookie, quindi il database sarebbe in ogni caso inaccessibile.


Prima o poi tutti i browser supporteranno a pieno html5, penso sia solo questione di tempo e anche firefox e IE si adegueranno ;)


Si e gli utenti devono pure aggiornarsi, ancora abbiamo tra i piedi IE6, figuriamoci...
Mi risulta comunque che FF abbia già il supporto al webstorage.


si ovvio che dovrebbero essere fatti questi controlli, se il database non c'è dovrebbe essere ricreato.
C'è da dire che in questo db locale non verranno salvati dati "utili" al server, ma utili al client, per cui se li cancella significa che non gli servono..


Pensavo al classico elimina file temporanei, sicuramente verranno eliminati anche tutti i db creati.


Un esempio che mi viene in mente potrebbe essere un blocco appunti virtuale in cui l'utente ci può scrivere quello che vuole e quando ritorna nel sito ritrova il blocco appunti con le stesse cose che aveva scritto.
Questi potrebbero essere dei dati che avrebbe senso salvare nel client, piuttosto che nel server ;)

In questo modo hai appena trasformato un'applicazione web in una desktop :)

manuel17787
08-11-2010, 01:30
Difficile che l'utente abbia un Sqlite manager per aprire il file, oltretutto non è detto che il nome sia in chiaro o che l'accesso non sia protetto da password.
E se l'utente non è connesso non può navigare la pagina, dovrebbe salvarla in locale, ma, e qui non so come funzioni, il browser consentirà ugualmente l'accesso al db se la pagina non proviene dallo stesso dominio che lo ha generato? Perchè se non fosse così ci sarebbero delle falle di sicurezza macroscopiche. Ma credo che il tutto funzioni come i cookie, quindi il database sarebbe in ogni caso inaccessibile.

Si, deve venire dallo stesso dominio.

Si e gli utenti devono pure aggiornarsi, ancora abbiamo tra i piedi IE6, figuriamoci...
Mi risulta comunque che FF abbia già il supporto al webstorage.

Di utenti con IE6 ce ne saranno anche tra vent'anni :D vorrà dire che non potranno usufruire di tutte le funzionalità..
Firefox (da quanto mi risulta) supporta Session Storage e Local Storage, ma non Database Storage. Ho fatto una prova con FF4 beta ma non và..

In questo modo hai appena trasformato un'applicazione web in una desktop :)

Intendevo un blocco appunti come parte di un'applicazione più complessa, magari un browser game, dove i dati del gioco vengono salvati nel server, gli appunti nel client..