Precedente :: Successivo |
Autore |
Messaggio |
Smjert Dio maturo


Registrato: 01/04/06 18:19 Messaggi: 1619 Residenza: Perso nella rete
|
Inviato: 02 Lug 2009 10:31 Oggetto: Variabile superglobale php |
|
|
Mi servirebbe avere una variabile che posso leggere e impostare in qualunque file php (in realtà in 2 file), il problema è che il primo file contiene una chiamata ajax al secondo, e il secondo dovrebbe restituire solamente del codice javascript che deve essere eseguito (con eval()).
Ho provato a pensare a come usare $GET e $POST, solo che il secondo file dovrebbe includere come risposta, oltre che al codice js, anche il nuovo valore della variabile e il primo file dovrebbe parsare il testo rimuovendo il nuovo valore della variabile, per poi eseguire il codice js.
Ho pensato a come usare anche $SESSION, ma usando session_start() sul secondo file la risposta alla richiesta ajax contiene della "sporcizia" (pezzi in html) che anche qui dovrei rimuovere...
Terza soluzione potrebbe essere quella di memorizzare la variabile nel db MySql.. solo che fare una query ogni volta... boh..
Sbaglio io qualcosa? C'è un modo più "semplice" per avere questo tipo di variabile? |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 02 Lug 2009 10:58 Oggetto: Re: Variabile superglobale php |
|
|
non è chiaro l'uso che devi fare di questa variabile, e se questa sia relativa ad una impostazione del sistema (e quindi valida per tutti) o se sia specifica dell'utente...
nel primo caso un valore in una bella tabellina config sul DB, nel secondo una variabile di sessione.
 |
|
Top |
|
 |
Smjert Dio maturo


Registrato: 01/04/06 18:19 Messaggi: 1619 Residenza: Perso nella rete
|
Inviato: 02 Lug 2009 11:21 Oggetto: |
|
|
Provo a spiegare cosa sto facendo.
In pratica io ho una google maps caricata dal primo file php il quale cattura (via js) l'evento "zoomend" (cioè quando viene cambiato lo zoom).
In questo evento viene fatta una richiesta XHR al secondo file php, che carica dei dati dal db MySql e in base a quelli mi fa un echo di codice js che deve essere poi eseguito dal primo file php, in modo che mi aggiunga delle icone sulla google map.
La richiesta al secondo file php la lancio all'evento zoom perchè devo controllare il nuovo zoom... se ho un certo zoom devo mostrare le icone, se no no.. e il controllo dello zoom viene fatto nel secondo file php.
Ora venendo al mio problema.. dato che gli zoom validi per mostrare le icone sono entro un range.. ogni volta che cambio zoom dentro a questo range mi viene aggiunta l'icona (e alla fine ce ne sono più sovrapposte), mentre io voglio che venga aggiunta una volta sola.. quindi ho bisogno di una variabile che dica se le icone sono già mostrate.. ed è una variabile diversa per ogni utente.
Tu mi dici di usare session.. bene ma per usare $SESSION dovrei mettere session_start() nel secondo file php.. il fatto è che poi la richiesta XHR si ritrova non solo del codice js ma anche parti in html... e dovrei (non so ancora bene come) togliergli via quella parte.
è un po' più chiaro? |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 02 Lug 2009 11:32 Oggetto: |
|
|
Smjert ha scritto: | è un po' più chiaro? |
poco
comunque (se ho capito) puoi mettere un flag nella richiesta (GET o POST) al secondo file php, così che ti generi del JS diverso, eventualmente... |
|
Top |
|
 |
Smjert Dio maturo


Registrato: 01/04/06 18:19 Messaggi: 1619 Residenza: Perso nella rete
|
Inviato: 02 Lug 2009 11:41 Oggetto: |
|
|
Provo a riassumere.. il primo file contiene la mappa google maps e la gestione dei suo eventi (vedi lo zoom), il secondo è un file in php puro che carica dal db MySql le informazioni riguardanti le icone da aggiungere e con un echo restituisce del codice javascript alle richieste ajax del primo file, codice che una volta eseguito aggiunge delle icone sulla mappa.
Ora io ho bisogno che il secondo file restituisca solo del codice js.
Se dovessi usare $GET e $POST, dato che ad ogni richiesta ajax dal primo file dovrei mandare questa flag aggiornata, il secondo file dovrebbe rispondere con il codice js E il nuovo valore di questa flag/variabile e questo nuovo valore dovrei rimuoverlo dal responseText della richiesta ajax.
Non che sia impossibile da fare chiaramente.. ma non c'è proprio altro modo allora?
PS: esempio pratico.
Il primo file php mi carica la google map con zoom 7.
Ogni volta che zoomo parte una richiesta al secondo file che controlla lo zoom (passato via GET), se lo zoom è < 9 allora fai exit e quindi non fare nulla.
Al contrario se lo zoom non è < 9 caricami le informazioni delle icone del database e restituisci con un echo del codice js che deve essere eseguito dal primo file, codice che aggiungerà le icone.
Ora chiaramente qui ho più casi in cui lo zoom può essere non < di 9 quindi il risultato che ho è che mi vengono caricate più volte le icone, una sopra l'altra.. mentre io ho bisogno di sapere se sono state già caricate. |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 02 Lug 2009 12:17 Oggetto: |
|
|
Mi riprometto di analizzare meglio la cosa più tardi però, perchè non fai in modo che la pagina "due" ritorni solo i dati e non il codice js da eseguire?
In pratica dal db tiri fuori le info, la pagina "uno" cattura il response xml o json ed esegue il codice a seconda. In questa pagina memorizzi una var js che ti fa da flag.
Dato che questa pagina non si ricarica mai, ottieni che la tua var è sempre aggiornata con il valore corretto. |
|
Top |
|
 |
Smjert Dio maturo


Registrato: 01/04/06 18:19 Messaggi: 1619 Residenza: Perso nella rete
|
Inviato: 02 Lug 2009 12:38 Oggetto: |
|
|
freemind ha scritto: | Mi riprometto di analizzare meglio la cosa più tardi però, perchè non fai in modo che la pagina "due" ritorni solo i dati e non il codice js da eseguire?
In pratica dal db tiri fuori le info, la pagina "uno" cattura il response xml o json ed esegue il codice a seconda. In questa pagina memorizzi una var js che ti fa da flag.
Dato che questa pagina non si ricarica mai, ottieni che la tua var è sempre aggiornata con il valore corretto. |
Perchè è molto più comodo generare subito il codice js nella stessa pagina dove vengono caricati i dati (e le icone possono essere multiple.. anche 30-40) che passare la risposta e doverla parsare nel primo file per generare il codice js rispettivo. |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 02 Lug 2009 13:02 Oggetto: |
|
|
Smjert ha scritto: | freemind ha scritto: | Mi riprometto di analizzare meglio la cosa più tardi però, perchè non fai in modo che la pagina "due" ritorni solo i dati e non il codice js da eseguire?
In pratica dal db tiri fuori le info, la pagina "uno" cattura il response xml o json ed esegue il codice a seconda. In questa pagina memorizzi una var js che ti fa da flag.
Dato che questa pagina non si ricarica mai, ottieni che la tua var è sempre aggiornata con il valore corretto. |
Perchè è molto più comodo generare subito il codice js nella stessa pagina dove vengono caricati i dati (e le icone possono essere multiple.. anche 30-40) che passare la risposta e doverla parsare nel primo file per generare il codice js rispettivo. |
Ma tu non devi leggere il response e generare codice js, devi usare i dati del response da passare al codice js che parte quando la pagina "due" viene caricata.
Comunque, anche seguendo la tua strategia, lo script ritornato ed eseguito con eval ha accesso alle var della pagina "uno" quindi se fai in modo di settare un flag js definito in "uno" tramite "due" sei a posto.
Poi stasera studio meglio la cosa, ma mi sa tanto che la cosa sia fattibile. |
|
Top |
|
 |
Smjert Dio maturo


Registrato: 01/04/06 18:19 Messaggi: 1619 Residenza: Perso nella rete
|
Inviato: 02 Lug 2009 13:18 Oggetto: |
|
|
Eh ma non è così facile usare i dati con il codice js della pagina 1.. proprio perchè non mi ritorna un set di dati per una icona, ma più dati, per tutte le icone, per questo dico che dovrei poi parsare i dati dalla stringa response.
In pratica io con 1 chiamata carico in un colpo tutti i dati.
Comunque in effetti io pensavo a interrompere la parte php (quindi la richiesta XHR parte ma il php non restituisce i dati), in effetti con js potrei non far proprio partire la richiesta.
Ci provo. |
|
Top |
|
 |
|