Newsgroup: it.comp.www.php
Titolo: strategie di navigazione

Che strategie usate per navigare tra le form?
Ad esempio, vi affidate al tasto 'indietro' o implementate dei link/bottoni 
'back' nel cui href mettete parametri per tornare indietro alla form giusta?
Oppure usate l'oggetto session (o il db) per mantenere gli stati?
Ad esempio:
- dalla form che mostra i record in forma tabellare passo alla form che 
edita un record
- da questa, tramite il tasto 'salva' eseguo una azione che salva i dati e 
quindi mostro la form 'operazione eseguita'
- da quest'ultima mi aspetto che il tasto 'ok' mi porti ad esempio alla 
prima form, quella tabellare
Per il momento sto riscrivendo l'url, aggiungendo i riferimenti alla form in 
cui tornare, ma stamattina mi sono reso conto che questo e' un problema di 
push e pop in uno stack. Cioe' non basta un riferimento ma serve uno stack 
di riferimenti.
Quanto al session, lo sto tenendo come jolly per via del collo di bottiglia 
in caso di load balancing. Forse il db e' una buona idea.
Sono un po' perplesso. Se qualcuno vede le cose piu' chiaramente di me, ho 
conosce delle best practices, lo ringrazio in anticipo per ogni 
suggerimento.
Enrico 

 prima form, quella tabellare
Beh, se il comportamento che ti aspetti č quello, allora linka il pulsante
OK alla tabella.
Oppure puoi usare HTTP_REFERER per tornare alla pagina chiamante.
Oppure puoi portarti dietro la chiave primaria e richiamare la pagina di
edit con il valore di chiave, per visualizzare il record modificato.
Ciao
Marco

 wrote in message 
news:cmq4f8$73a$1...@newsreader.mailgate.org...

Non riesco a farlo nei casi piu' difficili, cioe' quando ad una form arrivi 
da due strade diverse. Ad esempio alla form 'operazione eseguita' arrivo 
dalla form 'edit' oppure dalla form 'new record', per intenderci. Nella 
prima ci arrivo con una chiave primaria, mentre nella seconda la chiave 
primaria viene creata al momento. Insomma, i casi sono tali e tanti da far 
diventare il problema una classica navigazione di grafo, la cui soluzione e' 
l'uso di uno stack.
Dimenticavo inoltre di dire che uso una manciata di funzioni php per 
definire quella decina di tipologie di form, e puoi applico questo framework 
alle centinaia di entita' dell'applicazione. Quindi non posso permettermi di 
fare link troppo 'assoluti'.
Non essendo un guru di php, la domanda che ponevo era sulla strategia di 
conservazione dello stato in questo linguaggio.
Grazie
Enrico 

 primaria viene creata al momento.
mysql_insert_id(), se usi MySQL.
E poi torni alla edit con quel valore di ID.
Ciao
Marco

 
Personalmente utilizzo
array $_SESSION o file di testo con id di sessione,
anche se una ottima soluzione (se ne puoi disporre) sarebbe SQLite.
Non ti fidare del REFERER , basta un qualunque personal firewall per 
oscurarlo.
per evitare il ricaricamento di pagina con post uso la solita tecnica 
con pagina "ponte" a tre passi, che ho scritto in questo newsgroup 
almeno cinque volte! ;-)
C'è da dire che alcuni elementi dipendono molto dal browser utilizzato.
Firefox e Mozilla "ricordano" i valori immessi nel form con l'uso dei 
pulsanti back (a parte i campi password, ovviamente), mentre IE *di 
solito* no.
Per questi elementi client prova anche a rivolgerti su it.comp.www.html 
o giù di lì.
Ciao
Marcello

 di riferimenti.
Quello che stai per scoprire e' che il WEB e' concepito come un libro
elettronico le cui pagine sono sfogliabili in un qualunque ordine. Questa
soluzione e' adatta per la diffusione delle informazioni, ma non e'
adatta per la realizzazione di applicazioni dove e' richiesto di vincolare
l'utente su di percorsi rigidamente stabiliti dall'applicazione stessa.
Si tratta insomma di sfruttare il browser WEB come una sorta di generico
client di applicazioni client/server. Definire queste applicazioni "pagine
WEB dinamiche" e' riduttivo, perche' devono piuttosto essere concepite
dal programmatore pensando alle classiche applicazioni stand-alone con
interfaccia grafica (GUI) che dispongono di uno stack delle chiamate e
di funzioni di call-back sui controls.
Questa e' una implementazione in Bash di quei concetti:
http://www.icosaedro.it/bt_/
Questi invece sono una serie di articoli che ho scritto, ancora incompleti, ma
che dovrebbero arrivare alla stessa cosa scritta in PHP:
http://www.icosaedro.it/php/
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it