Newsgroup: it.comp.www.php
Titolo: piu veloce inviare array a js o far caricare file js

situazione 
pagina risultante con varie select, del tipo selezionando una select, se ne
riempie un'altra in base al valore scelto  etc
es Marca Auto>Modello>Lista Accessori
es Marca Prodotto>Versione>Tutti i ricambi disponibili
etc
i dati possono essere tutti lato client;
anzi da preferirsi per evitare lentezza e richieste inutili al server
come soluzione 
1) quando la pagina viene caricata, far caricare anche un file javascript;
   problema è se il file pesa es 2-300kb 
 
2) far caricare a php direttamente una variabile js e poi inviare alla
   pagina tale variabile; 
ci sono differenze?
inoltre come è preferibile fare l'array;
io ho ipotizzato qualcosa di simile
Ipotizzando 20 marche
  [marca]
marca[01]['Marca 1'];
marca[02]['Marca 2'];
...
marca[20]['Marca 20'];
Ipotizzando che ogni marca ha 3 modelli alla fine ho 60 modelli
    [marca][modello]
modello[01][m01][modello m01 della marca 1'];
modello[01][m02]['modello m02 della marca 1'];
modello[01][m03]['modello m03 della marca 1'];
...
modello[20][m58]['modello m58 della marca 20'];
modello[20][m59]['modello m59 della marca 20'];
modello[20][m60]['modello m60 della marca 20'];
Ipotizzando che ogni modello abbia 100 accessori
     [modello]
accessori[m01]['accessorio 1 del modello m01'];
accessori[m01]['accessorio 2 del modello m01'];
… 
accessori[m01]['accessorio 100 del modello m01'];
……..
……..
……..
accessori[m60]['accessorio 1 del modello m60'];
accessori[m60]['accessorio 2 del modello m60'];
… 
accessori[m60]['accessorio 100 del modello m60'];

situazione 
pagina risultante con varie select, del tipo selezionando una select, se ne
riempie un'altra in base al valore scelto  etc
es Marca Auto>Modello>Lista Accessori
es Marca Prodotto>Versione>Tutti i ricambi disponibili
etc
i dati possono essere tutti lato client;
anzi da preferirsi per evitare lentezza e richieste inutili al server
come soluzione 
1) quando la pagina viene caricata, far caricare anche un file javascript;
   problema è se il file pesa es 2-300kb 
 
2) far caricare a php direttamente una variabile js e poi inviare alla
   pagina tale variabile; 
ci sono differenze?
inoltre come è preferibile fare l'array;
io ho ipotizzato qualcosa di simile
Ipotizzando 20 marche
  [marca]
marca[01]='Marca 1';
marca[02]='Marca 2';
...
marca[20]='Marca 20';
Ipotizzando che ogni marca ha 3 modelli alla fine ho 60 modelli
    [marca][modello]
modello[01][m01]=’modello m01 della marca 1’;
modello[01][m02]=’modello m02 della marca 1’;
modello[01][m03]=‘modello m03 della marca 1’;
...
modello[20][m58]=‘modello m58 della marca 20’;
modello[20][m59]=‘modello m59 della marca 20’;
modello[20][m60]=‘modello m60 della marca 20’;
Ipotizzando che ogni modello abbia 100 accessori
     [modello]
accessori[m01][]=‘accessorio 1 del modello m01’;
accessori[m01][]=‘accessorio 2 del modello m01’;
… 
accessori[m01][]=‘accessorio 100 del modello m01’;
……..
……..
……..
accessori[m60][]=‘accessorio 1 del modello m60’;
accessori[m60][]=‘accessorio 2 del modello m60’;
… 
accessori[m60][]=‘accessorio 100 del modello m60’;
.........
altro
per la stringa si puo' usare sia singolo che doppio apice 'accessorio 100'
che "accessorio 100"?


ipotizza 2000 marche di auto con ognuna 10000 modelli
oguna di queste ha l'anno ecc....

 far caricare una pagina HTML + js statico (cioe non generato dal php)
non è quello che ho richiesto?
cioè il php crea la pagina e le varie select, poi per cambiare i dati alle
select si usa js e i dati li legge da una variabile js;
il codice delle selct quindi cical su una variabile js:
si dev per forza far caricare tutto il file js?
oppure lato server si carica una variabile js e si invia tale varibile?
o è possibile una soluzione tipo ajax ma invece di andargli a far leggere
i dati sul server gli si fanno leggere i dati di una variabile js già sul 
lato client?
tale soluzione è possibile?
puo' essermi utile riguardo al fatto che le options aggiunte in modo
standard ad una selct in js non sono inviate al form (l'altro post)


se non ho capito male, tu vorresti che i dati vengano caricati solo e 
soltanto una volta sul client e che quest'ultimo si occupi di "smistare" 
a seconda delle "select option" ??
si lo puoi fare ma non è questo il NG adatto ti serve html + js in 
special modo la notazione JSON, praticamente a te serve uno store locale 
(il nuovo paradigma dell'HTML5), quasi tutti i framework js fanno quello 
che richiedi, io utilizzo DOJO, praticamente da php carichi una 
variabile in formato json:
http://www.php.net/manual/en/function.json-encode.php
da javascript leggi il json e carichi la select option,
con dojo crei uno store:
http://dojotoolkit.org/reference-guide/dojo/data/ItemFileReadStore.html
che poi assegni a ciò che ti pare, in dojo ad esempio crei un campo 
dojoType="dijit.form.FilteringSelect" che non è nient'altro che una 
select option.
all'evento onchange esegue in questo caso una chiamata ajax ma nulla 
vieta di operare sullo stesso store e caricare un altra select option.
<div dojoType="dojo.data.ItemFileReadStore" jsId="StoreProvincia" 
url="/config/tenant/provincia"></div><input options="" 
style="width:100%" searchAttr="provincia" 
onchange='dijit.byId("citta").store = new dojo.data.ItemFileReadStore({ 
url: "/config/tenant/citta/provincia/" + dijit.byId("provincia").value 
})' listsep="&lt;br /&gt;" id="provincia" name="provincia" value="ROMA" 
type="text" autocomplete="1" store="StoreProvincia" required="true" 
dojoType="dijit.form.FilteringSelect"></td></tr>
<tr><td id="citta-label"><label for="citta" 
class="required">citta</label></td>
uno store locale non è nienta'altro che un array.
NB
se quello che cerchi di fare è il minor numero di chiamate al server 
possibile, una soluzione è quella dello store locale come indicato, 
sempre se i dati non siano soggetti di cambiamenti, cioè se tali dati 
rimangono stabili nel medio/lungo periodo (come ad esempio marca/modello 
autovetture, provincia/citta/cap, unità di misure, ecc), ma se i dati 
sono soggetti a cambiamenti nel breve periodo (come ad esempio possono 
essere una scorta magazzino, le azioni di borsa, un ordine di 
qualsivoglia natura, e che questi dati siano soggetti a modifiche da 
parte di più utenti, rischi di trovarti con dati non aggiornati e 
falsati, che possono farti Cannare tutta l'applicazione).
Spero di esserti stato utile
Ciao

 autovetture, provincia/citta/cap, unitą di misure, ecc),
č proprio questo il caso , array pesanti e molto statici

 è proprio questo il caso , array pesanti e molto statici
aspetta un momento
se la tua esigenza e quella di caricare che ne so marca / modello / 
accessori di autovetture, non è che siano molto "pesanti", anche perchè 
non è che carichi tutto insieme, mi spiego meglio, utilizzando ajax tu 
dal server invii solo la select option della marca (codice e 
descrizione) queste non è che siano pesanti (un array con al max un 
centinaio di record forse), dopo di che nel momento che l'utente ha 
selezionato una marca effettui una richiesta ajax con SOLO la marca 
selezionata ed dal server fai inviare SOLO i modelli di quella marca (e 
anche qui, non è che siano infiniti o pesanti) e carichi la select 
option, successivamente di quel modello richiedi che ne so gli accessori 
e così via, alla fine vai sempre di più ad assottigliare la ricerca e di 
conseguenza i dati di ritorno.
in questo modo hai il vantaggio che il controllo TOTALE 
dell'applicazione risiede sul server, mentre se elabori tutta la logica 
di business via javascript questi essendo in locale possono essere 
soggetti ad hack.
Ciao