ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | OpenSource | PhpNuke | Programming | SysAdm | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
ZOPE UN APPLICATION SERVER OPEN SOURCE
Il mondo di Zope
Installazione
L'interfaccia di gestione
I Database
DTML e ZSQL
Conclusioni
L'Autore


<<< DTML e ZSQL >>>

Senza alcuna pretesa di coprire interamente l'argomento, entriamo adesso in alcuni dettagli di come funziona il DTML e la sua interfaccia ai database SQL. Per fare questo costruiremo l'esempio mostrato in figura 7. Si tratta di una semplice tabella di utenti con le relative password, con la funzione di visualizzazione dal database, e di inserimento di nuovi utenti tramite un modulo Web. Il tutto in una unica pagina, che però sintetizza bene le problematiche tipiche di questo tipo di applicazioni. In figura 7 possiamo vedere anche il listato completo dell'applicazione, che ripeteremo qui passo passo spiegando cosa fa. Lasceremo al lettore come esercizio (piuttosto semplice) l'aggiunta di un bottone per la rimozione di utenti.

Per fare una interrogazione al database si deve creare un oggetto di tipo "ZSQL method". La procedura è la solita: dell'interfaccia di gestione si crea un nuovo oggetto del tipo richiesto, dopo di che lo si seleziona e lo si modifica. Nel nostro caso occorre dargli un id, che sarà "selUser", specificare il database da usare (in questo caso l'unico disponibile sarà quello che abbiamo già creato) e inserire l'interrogazione necessaria per estrarre i dati dal database, ovvero:

select login, password from user

A questo punto, creiamo la pagina "adduser" (un oggetto di tipo "DTML document") e inseriamo il seguente codice:



 
]]>

La visualizzazione della tabella si ottiene utilizzando semplicemente l'HTML che serve per descriverla. Dobbiamo però aggiungere due parti in DTML: dtml-var e dtml-in . La prima l'abbiamo già vista. Inserisce variabili. Dobbiamo dire però che le variabili sono qualcosa di più complesso che semplicemente le altre pagine. Infatti è possibile impostare le variabili usando le form, o con chiamate ad altri oggetti (che in questo caso vengono detti "metodi"). In realtà le variabili vengono ricercate per prime tra i valori che sono disponibili correntemente per la pagina, poi tra i parametri e poi tra gli altri oggetti disponibili in Zope, risalendo verso l'alto nella gerarchia delle directory.

Per capire come funziona la visualizzazione della tabella, occorre tenere presente che dtml-in selUser per prima cosa invoca il metodo. Questo metodo ritorna una sequenza, che viene iterata dal tag, creando una nuova riga della tabella HTML per ogni riga estratta dal database. I campi estratti dal database vengono posti nelle variabili "login" e "password", e inseriti nella pagina usando dtml-var

Leggermente più complicato è l'inserimento di dati. Per prima cosa occorre una form. Quanto segue è puro HTML:


Login:
Password:
]]>

Per l'inserimento occorre create un altro metodo ZSQL, che avrà id "insUser" e che conterrà la seguente interrogazione:

, )
]]>

La logica di uno ZSQL Method è molto simile alla logica del DTML: oltre al normale SQL possiamo inserire dei tag speciali. In questo caso abbiamo usato dtml-sqlvar invece di dtml-var perché gestisce in automatico le trasformazioni necessarie per inserire una stringa arbitraria in SQL (altrimenti saremmo dovuti stare attenti a dettagli come gli apici, gli apici dentro gli apici eccetera).

Adesso possiamo completare l'inserimento. Quando viene chiamata la pagina, viene visualizzato il modulo con login e password. Inviandolo, viene richiamata la pagina stessa, con impostati come parametri login e password. I parametri passati ad una pagina sono variabili, visibili in DTML. Per gestire l'inserimento, dobbiamo inserire, generalmente all'inizio della pagina, il seguente codice:


 
]]>

In questo modo, se è impostata la variabile login, vuol dire che l'utente ha inviato il modulo. In tal caso viene chiamato esplicitamente il metodo ZSQL "insUser". Questo metodo, prende le variabili "login" e "password" e le usa per inserire i dati nel database. E il gioco è fatto.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com