PDA

Visualizza la versione completa : print prima di tutto!


eraldo1234
10-02-2004, 19:06
Ciao a tutti.
Ho un problema e non so come risolverlo. Io con il Perl sono alle prime armi quindi vi chiedo di aiutarmi!!!
ho creato un programma che gestisca degli articol, quindi posso inserire articoli su database, modificarli ed iliminarli e quando meglio credo, tramite un pulsante creare le pagine HTML che lo visualizzino. Ora siccome gli articoli inseriti sono molti ed io ho bisogno di ricreare tutte le pagine tutte le volte avrei bisogno di un semplice messaggio che mi visualizzi "attendere prego.." poi compia le azioni ed infine mi dica "Fatto!", ma non ho trovato nessun modo funzionante per farlo!
Io semplicemente scrivo (dopo tutte le varie righe di apertura)

print "attendere prego...";

**** tutto il codice che esegue delle SELECT su database e
costruisce le pagine HTML

print "fatto!";

Ma come risultato ottengo che mi esegue il 1 print soltanto dopo aver eseguito tutte le select e le creazioni ed un istante dopo aggiunge il "fatto"! Per tutto il tempo di esecuzione mi ritrovo con una pagina bianca.

Come posso fare per farli eseguire prima di ogni altra cosa il 1 print e poi il resto???

Vi ringrazio in anticipo :cry:

Mich_
11-02-2004, 08:39
Un CGI in Perl e` uno strumento che crea una pagina Web "al volo", cioe` la crea e la manda al server immediatamente.

Quello che chiedi sono due pagine: una di attesa ed una completa, che necessitano quindi di due script (il CGI non puo` autonomamente inviare una nuova pagina, se non richiesto dal client). E questo rende la cosa molto piu` complessa (dovresti tener conto dei codici di sessione, ...).

Si puo` ovviare ai problemi creando una pagina fatta di due livelli (layer o <div> ), il primo molto semplice che poi sparisce e lascia il posto all'altro, che nel frattempo e` stato generato.

Quindi devi:
1. inviare i codici di apertura pagina;
2. generare il primo <div> largo e lungo come la finestra del client che contiene solo "attendere prego ...";
3. aprire il secondo <div>;
4. generare la pagina con tutte le parti ricavate da database;
5. chiudere il secondo <div>;
6. chiudere la pagina e fare in modo che il primo div sparisca.

Nel CGI e` importante l'ordine con cui esegui le varie operazioni, mentre il punto 6 lo puoi far fare dal client con l'evento onload.

Se ti e` chiaro questo schema, ti posso dare una mano sui punti 1, 2 e 6, che comportano un lavoro lato client (CSS e Javascript), mentre i punti 3-5 dovresti essere in grado di farli con il Perl (e immagino che gia` li fai).

Ci risentiamo.
Ciao
Michele

shishii
11-02-2004, 16:01
Ciao,

su alcuni server possibile ottenere l'effetto che cerchi, inserendo in cima allo script, dopo eventuali pragma use la stringa:

$| = 1;

che forza la scrittura dell'output appena si genera e non tutto alla fine.

eraldo1234
12-02-2004, 12:18
Perfetto! :metallica

Grazie proprio quello che mi serviva!

Ciao e grazie a tutti.

Loading