Newsgroup: it.comp.lang.javascript
Titolo: Gestire Database ?

Modena, 25 Marzo 2000.
E' da poco tempo che sono entrato nel mondo Javascript anche perchè lo uso
(pochissimo) per la mia pagina web.
Però la domanda che mi pongo è questa : è possibile gestire dei database con
javascript ?
Se la cosa fosse possibile, dove posso reperire informazioni ?
Oppure come si può risolvere il problema ?
Grazie.

Non si puň. L'alternativa sarebbe, sempre che il server su cui sei appogiato
ti autorizzi, di usare le ASP, se č installato winNT, e PHP se invece c'č
Unix
Ciao
Giuseppe Di Natale
gdin...@camomillaitalia.it
------------------------------------------
JS Labs - FAQ di it.comp.lang.javascript
http://jslabs.webhostme.com
FlyScript by JS Labs, JS in 3 click
http://jslabs.webhostme.com/servizi/flyscript/
------------------------------------------

 Oppure come si può risolvere il problema ?
Con gli Array è una favola: puoi crearti strutture dati anche molto
complesse, eseguire ricerche veloci e potenti, ma devi conoscere abbastanza
il linguaggio da saperti creare e gestire le funzioni di ricerca, perché il
supporto del Javascript è come quello di qualunque altro linguaggio di
programmazione, con delle cose in più, che ti aiutano molto...
Non hai la possibilità di nascondere il database, che ovviamente sarà
leggibile da chiunque, e in ogni caso, se cerchi una soluzione
professionale, devi pensare di usare ASP.
Bye.
Ðarius.

 scrisse con tanto coraggio:
potresti, ma con DB grossi la cosa diventa un po' scomoda....
cmq x farti toccare con mano ecco un esempio:
function record(nome, cognome, indirizzo, telefono, cap, città) {
    this.nome = nome;
    this.cognome = cognome;
    this.indirizzo = indirizzo;
    this.telefono = telefono;
    this.cap = cap;
    this.città = città;
    c++;
}
var c = 0;
var contatto = new Array();
contatto[c] = new record("mario", "bianchi", "via milano 13", "0338",
"00100", "roma");
contatto[c] = new record("claudio", "rossi", "via roma 20", "0347",
"20190", "milano");
ecc....
potrai accedere a ogni record tramite i prototipi (si chiamano così?)
quindi:
contatto[1].nome corrisponderà a "claudio"
contatto[0].città corrisponderà a "roma"
puoi fare ricerche all'interno di sto db in questo modo (questa
funzione ritorna solo il numero del primo record che trova:
function cerca(cosa, dove) {
    for (a=0; a<contatto.length; a++) {
        if (eval("contatto[a]." + dove)==cosa) {
            return a;
        }
    }
}
    ci@o
¯¯¯¯¯¯¯¯¯¯¯¯¯
 [Federiko]

[Federiko] <fede...@TOGLImaidireweb.com> wrote in message
me6qdsoagkb0cdk1j...@4ax.com...
Ciao, [Federiko]!
Che dici se trattiamo un po' di teoria anche sui DB non troppo piccoli?
;)
Riparto dal tuo esempio per non dover ricominciare da capo a scrivere.. :)
Per risparmiare il maggior spazio possibile (quando il DB diventa molto
lungo, ripetere ogni volta "new Array()", o altre varianti che si vedono in
giro, porta via decine e decine di Kb...), creiamo l'array risparmiando
un po' sui demarcatori:
var contatto = new Array(
"mario;bianchi;via milano 13;0338;00100;roma",
"claudio;rossi;via roma 20;0347;20190;milano",
"Ðarius;???;via lontano 999;011;10100;torino"
)
In questo modo si ha un vettore "grezzo", che però è possibile raffinare ed
elaborare a seconda delle proprie esigenze.
E' possibile estrarre una semplice lista di elementi, ad esempio l'elenco
dei cognomi, in un normale Array:
cognomi=new Array()
for(i in contatto)
    cognomi[cognomi.length]=i.split(";")[1]
In questo modo, si avrà che:
    cognomi[0]=="bianchi"
    cognomi[1]=="rossi"
    [...]
oppure creare delle associazioni più immediate: dato il numero di telefono,
per trovare ad esempio nome e cognome insieme:
var address_nomi=new Array()
var X
for(i in contatto)
    address_nomi[(X=i.split(";"))[3]]=X[1]+" "+X[0]
in quest'altro modo, per sapere immediatamente chi abita in "via milano
13", basterà andare a vedere:
    address_nomi["via milano 13"]
per far saltar subito fuori: "bianchi mario"
Sarà anche possibile, poi, verificare con un solo passaggio se un dato
elemento
esiste o meno nel DB. Ad esempio, si voglia verificare se è registrato nel
database l'indirizzo "via milano 13". In questo caso un semplice:
    if(address_nomi["via milano 13"])
        alert("trovato")
eviterà una più lenta e noiosa ricerca elemento per elemento...
Gli esempi precedenti sono l'ideale nel caso di ricerche per campi univoci,
cioè che esistono una volta sola in tutto il DB, quali probabilmente possono
essere
l'indirizzo (beh, neanche quello è sicuro), il numero di telefono, o ancor
più il codice fiscale di una
persona.
Se invece si opera tra campi che si ripetono nel DB, come ad esempio i nomi
delle città o i nomi delle persone stesse questa possibilità non vale più e
si deve cercare le cose elemento per elemento.
Se si vuole fare una semplice ricerca tra tutti i campi, si è facilitati
perché si ha a disposizione delle stringhe nell'array "contatto", che è
appunto il
nostro database. Basterà un ciclo di ricerca per sottostringhe, nella
maniera seguente:
(come la tua, [Federiko], anche questa funzione ritorna solo il numero del
primo record che trova)
function cerca_tutto(cosa)
{
    for(i=0;i<contatto.length;i++)
        if(contatto[i].indexOf(cosa))
            alert("trovato nella riga: "+i)
}
Le ricerche specifiche, in cui si dice esattamente cosa si vuole cercare,
diventano invece di questo tipo:
function cerca_specifico(cosa,dove)
{
    for(i=0;i<contatto.length;i++)
        if(contatto[i].split(";")[dove]==cosa)
            alert("trovato nella riga: "+i)
}
Per massimizzare prestazioni e velocità si potrebbe anche creare un'unica,
lunga stringa contenente i dati, e agire tramite regular expressions
"spinte", ma quello serve se si ha bisogno di prestazioni davvero
esorbitanti.
I metodi sopra descritti impegnano inizialmente un po' il browser (più
netscape che explorer) a ricostruire i vari array, ma le operazioni
successive risultano praticamente istantanee, con un guadagno complessivo
notevole sia in termini di velocità che di compattezza.
Alla prox.
-----------------------
<Ðarius style="position:absolute; color:fair; background-color:green;
y-index:20;">
Bye.
</Ðarius>

;)
<snip>
ok, ok... hai ragione, ma ne possiamo parlare in pochi cosě... io non
gli volevo confondere le idee...
se giardi una delle mie ultime reply (con questa data) ho postato
un'altro modo di organizzare array, cmq x dilungarmi un po' pure
io...:
info = {io: {nome: "federico", cognome: ":-P"}, 1: "Mazda", federico:
"0123456789"};
info.io.nome corrisponde a "federico"
info[1] corrisponde a "Mazda"
info.federico corrisponde a "0123456789"
so che questo esempio non č proprio quello che cercavi di spiegare
tu... ma č sempre un buon esempio per memorizzare complessi tipi di
informazioni, e poi cosě tiro fuori questo argomento....
aspetto qualche risposta....
    ci@o
ŻŻŻŻŻŻŻŻŻŻŻŻŻ
 [Federiko]

sono alle prime armi e sto preparando una calcolatrice in javascrit(sembra
una stupida idea ma č solo per provare); vorrei sapere come faccio ad
eliminare le cifre che si formano dodo la virgola in una divisione
arrotondando per eccesso e per difetto, mi spiego con un esempio: voglio
convertire 5000 lire in euro dividendo il valora in lire per 1936.27, il
risultato č 2.5822844954474324 come posso fare per farlo diventare 2.59???
ringrazio ogni uno di voi per la risposta
ciao
http://unknownroad.tsx.org
 visitalo!!!

 risultato è 2.5822844954474324 come posso fare per farlo diventare 2.59???
