7 Elaborazione di dati XML con PHP SAX (Simple API for XML)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "7 Elaborazione di dati XML con PHP SAX (Simple API for XML)"

Transcript

1 7 Elaborazione di dati XML con PHP Nei precedenti capitoli è stata illustrata l elaborazione di dati XML sul lato client utilizzando lo standard DOM e il linguaggio XSLT. Verrà ora descritto come elaborare dati XML sul lato server utilizzando strumenti quali SAX, DOM e SimpleXML. In linea di massima, esistono due modi per gestire l elaborazione di dati XML: lo standard DOM (Document Object Model), che è stato già illustrato, e la tecnologia SAX (Simple API for XML). Lo standard DOM consente di creare una struttura ad albero gerarchica alla quale è possibile fare riferimento ripetutamente. Con SAX, i documenti XML vengono gestiti come una serie di eventi, un evento per ciascun elemento o attributo, e la risposta a questi eventi viene fornita durante l analisi del documento. Naturalmente, ogni approccio presenta i propri vantaggi e svantaggi. Il modello DOM, ad esempio, crea strutture ad albero che richiedono un uso esteso della memoria, ma una volta create, fornisce numerosi strumenti per spostarsi, elaborare e manipolare queste strutture ad albero. La tecnologia SAX consente una gestione lineare dei documenti XML, quindi si tratta di una tecnologia meno flessibile, ma che è anche più semplice e rapida da apprendere. PHP 5.0 fornisce un terzo approccio alla gestione dei documenti XML, un approccio che nel corso di questo manuale è stato già adottato. SimpleXML crea una struttura di oggetti gerarchica simile al modello DOM. La differenza sta nel fatto che questa struttura viene ottimizzata per l estrazione e l elaborazione delle informazioni, mentre il modello DOM fornisce una API più efficace, per un uso più generale, per manipolare la composizione della struttura ad albero.

2 Capitolo 7: Elaborazione di dati XML con PHP In questo capitolo verranno illustrati, nell ordine riportato, SAX, DOM e SimpleXML. Al termine, si disporrà di una buona conoscenza del modo in cui è possibile utilizzare le diverse API per gestire documenti XML. Utilizzo di SAX Si immagini di creare un documento XML, quindi di scomporlo nelle singole parti e disporre queste parti come in una catena di montaggio. In tal modo, è possibile vedere istruzioni di elaborazione, tag di inizio, contenuto, tag di fine e così via, ossia tutti gli elementi che compongono il documento sistemati all interno di un unica lunga riga. Si preme un pulsante e il documento comincia a spostarsi lungo la catena di montaggio sotto l attenta sorveglianza di un omino con un megafono. I singoli elementi del documento (un commento, un entità, un istruzione di elaborazione oppure un blocco di testo) scorrono l uno dopo l altro e la loro presenza viene annunciata di volta in volta dall omino con il megafono. Questo è più o meno ciò che accade con il parser SAX. Sfortunatamente, per poter fare qualcosa di interessante con SAX, occorre creare manualmente funzioni personalizzate per gestire i tag di inizio, i tag di fine e i dati di tipo character, eseguendo un azione immediata in risposta a ciascun di essi. Se si desidera memorizzare informazioni dal documento in una struttura dati temporanea da utilizzare successivamente, è bene ricordare che SAX non esegue questa operazione. Non per altro si tratta di un API semplice per XML! E allora, per quale motivo si dovrebbe utilizzare questo parser? L uso di SAX risulta conveniente nelle seguenti situazioni: Si sta gestendo un documento XML di grandi dimensioni che se trasformato in una struttura DOM richiederebbe una quantità eccessiva di memoria. Occorre attivare ed eseguire il parser rapidamente. Si sta eseguendo un attività di elaborazione limitata oppure si sta eseguendo un tipo di elaborazione molto semplice e lineare (ad esempio, la conversione di determinati elementi XML in elementi HTML). Non occorre modificare il documento XML originale. Nelle circostanze appropriate come, ad esempio, un documento XML di grandi dimensioni, è sicuramente più opportuno utilizzare SAX che non DOM. Tuttavia, è importante comprendere che in alcuni casi, che verranno illustrati a breve, è più appropriato utilizzare una struttura ad albero. 164

3 Utilizzo di SAX Il parser SAX predefinito per PHP è Expat[1], una libreria C affidabile e testata, che per impostazione predefinita viene abilitata nella maggior parte delle installazioni PHP. Non occorre installare altre librerie: tutto è già stato creato in PHP. Di seguito ne viene descritto l uso analizzando i singoli passi di una breve esercitazione. Il primo passo consiste nel creare un semplice file XML per l elaborazione. Il file che verrà utilizzato in questa sezione è il seguente: <?xml version= 1.0 encoding= iso ?> <keywords> <keyword>xml</keyword> <keyword>php</keyword> <keyword>perl</keyword> <keyword>javascript</keyword> <keyword>asp</keyword> </keywords> Esempio 7.1. keyword-data.xml A questo punto, è possibile creare del codice PHP. Tuttavia, sarebbe opportuno, prima di iniziare, avere già un idea del risultato finale che si desidera conseguire. In questo caso specifico, si desidera trasformare questo elenco di elementi di parole chiave in un elenco puntato HTML, come illustrato nella Figura 7.1, Elenco di parole chiave elaborato mediante SAX. Figura 7.1. Elenco di parole chiave elaborato mediante SAX [1] 165

4 Capitolo 7: Elaborazione di dati XML con PHP Creazione di gestori Prima di poter proseguire, occorre creare funzioni che gestiscano i tag di inizio, i tag di fine e i dati di tipo character. Queste funzioni verranno richiamate dal parser SAX mentre elabora il documento XML. Il primo gestore, a cui verrà assegnato il nome start_element, sarà responsabile della gestione di tutti i tag di inizio contenuti nel documento XML. È possibile scegliere per questo gestore il nome che si desidera; i nomi assegnati ai singoli gestori verranno poi comunicati a PHP. La funzione gestore per i tag di inizio deve accettare tre argomenti: un riferimento al parser SAX (che verrà creato a breve), il nome dell elemento il cui tag di inizio è stato rilevato e un array di attributi dell elemento (e dei relativi valori). Come è possibile notare di seguito, in questo caso il gestore non è altro che un istruzione switch che ricerca un nome di un tag XML e che risponde emettendo il codice HTML appropriato. Esempio 7.2. saxdemo.php (estratto) function start_element($parser, $element_name, $element_attrs) { switch ($element_name) { case KEYWORDS : echo <h1>keywords</h1><ul> ; break; case KEYWORD : echo <li> ; break; In SAX tutti i nomi dei tag sono maiuscoli Per impostazione predefinita, il parser SAX in PHP esegue un processo chiamato case folding, in cui qualsiasi carattere minuscolo contenuto nei nomi degli attributi o dei tag viene sostituito con l equivalente maiuscolo. Questo è il motivo per il quale i nomi degli elementi KEYWORDS e KEYWORD in questo esempio sono tutti in maiuscolo. Qualora si desideri disabilitare il case-folding, il manuale di PHP contiene informazioni[2] su come eseguire questa operazione. [2] 166

5 Creazione del parser ed elaborazione del documento XML Al prossimo gestore verrà assegnato il nome end_element. Questo gestore viene richiamato per rispondere ai tag di fine presenti nel documento e utilizza la stessa istruzione switch che è stata introdotta precedentemente per emettere il codice HTML appropriato quando i singoli tag di fine vengono rilevati. function end_element($parser, $element_name) { switch ($element_name) { case KEYWORDS : echo </ul> ; break; case KEYWORD : echo </li> ; break; Esempio 7.3. saxdemo.php (estratto) Infine, occorre trovare un modo per gestire i dati di tipo character. A tale scopo, viene creata una funzione character_data che visualizzi il valore di ciascun nodo che rileva. È bene ricordare che in XML, con dati di tipo character si indica tutto il testo che non sia markup; questo gestore visualizza tutte le informazioni che si trovano tra i tag di inizio e di fine di un elemento. function character_data($parser, $data) { echo htmlentities($data); Esempio 7.4. saxdemo.php (estratto) Dopo aver definito le funzioni personalizzate per la gestione del contenuto e dei tag, è necessario creare un istanza del parser. Creazione del parser ed elaborazione del documento XML I passi successivi sono relativamente semplici, anche perché gran parte del lavoro viene coordinata dalle funzioni di gestione appena create. Tutto ciò che occorre fare è creare il parser e indicargli quali funzioni sono state create per gestire i tag di inizio, i tag di fine e i dati di tipo character: Esempio 7.5. saxdemo.php (estratto) $parser = xml_parser_create(); xml_set_element_handler($parser, start_element, end_element ); xml_set_character_data_handler($parser, character_data ); 167

6 Capitolo 7: Elaborazione di dati XML con PHP Dopo aver fatto ciò, è possibile utilizzare la funzione PHP fopen standard per aprire il documento XML: $fp = fopen( keyword-data.xml, r ) or die ( Cannot open keyword-data.xml! ); Esempio 7.6. saxdemo.php (estratto) Con il documento XML, è possibile utilizzare un semplice loop while per leggere blocchi di codice gestibili (4 KB è una dimensione ragionevole) ed eseguirli attraverso il parser con la funzione xml_parse. In caso di errore, viene utilizzata la funzione die di PHP per visualizzare il messaggio di errore fornito da xml_error_string sulla base del codice di errore fornito da xml_get_error_code. xml_get_current_line_number viene utilizzato per puntare alla riga in cui si è verificato l errore. Esempio 7.7. saxdemo.php (estratto) while ($data = fread($fp, 4096)) { xml_parse($parser, $data, feof($fp)) or die(sprintf( XML ERROR: %s at line %d, xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); Una volta terminato il loop, liberare il parser utilizzando xml_parser_free. xml_parser_free($parser); Esempio 7.8. saxdemo.php (estratto) Per assimilare quanto illustrato finora, è opportuno ricapitolare tutte le singole attività che sono state completate: 1. Creazione di gestori per tag di inizio, tag di fine e dati di tipo character. 2. Avvio del parser. 3. Registrazione dei gestori personalizzati con il parser. 4. Apertura del file XML. 5. Esecuzione di un loop nel file, inviando singoli blocchi di dati attraverso il parser. 6. Utilizzo della funzione di rilevazione errori incorporata per identificare eventuali problemi. 7. Disimpegno del parser una volta completate tutte le operazioni. Come è possibile notare, l approccio SAX è molto semplice e chiaro. Tuttavia, non presenta alcune delle più efficaci funzioni che sono invece disponibili con altri approcci come, ad esempio, il modello DOM. 168

7 Utilizzo di DOM Utilizzo di DOM In questa sezione verrà illustrato come opera la funzionalità DOM in PHP. Il modello DOM è una tecnologia robusta e affidabile che consente di gestire svariate situazioni. Infatti, il principale punto di forza di questo standard è proprio la sua grande flessibilità. Per quanto concerne gli svantaggi, invece, è possibile citare l estrema complessità, la vastità e il fatto che, quando si carica in memoria un documento di grandi dimensioni, può addirittura bloccare le risorse. L utilizzo di DOM sul lato client è stato già illustrato. Per quanto riguarda il lato server, il DOM è un interfaccia standardizzata. Il modo più semplice per illustrare l utilizzo di DOM sul lato server consiste nel confrontarlo con le caratteristiche di SAX descritte nella sezione precedente. Come si è visto, è possibile utilizzare SAX per elaborare documenti XML in maniera molto lineare. La funzionalità DOM di PHP adotta un approccio differente. Carica un documento XML in memoria e lo converte in una propria struttura gerarchica di oggetti, fornendo due funzioni molto importanti che in SAX mancano. La prima è la possibilità di manipolare la struttura XML in memoria, consentendo l aggiunta, la rimozione, la modifica e la ridisposizione dei nodi. La seconda è quella che consente di esaminare il documento continuamente, con accesso casuale, e non solo in maniera lineare. Per un confronto dettagliato dei due approcci, utilizzare di nuovo il file XML contenuto nella sezione dedicata al parser SAX: <?xml version= 1.0 encoding= iso ?> <keywords> <keyword>xml</keyword> <keyword>php</keyword> <keyword>perl</keyword> <keyword>javascript</keyword> <keyword>asp</keyword> </keywords> Esempio 7.9. keyword-data.xml A questo punto, creare un parser DOM e caricare il file XML. Creazione di un parser DOM Per creare il parser, occorre creare un oggetto DOMDocument. Prima di utilizzarlo, è necessario disattivarne la funzione di gestione degli spazi vuoti per impedire che spazi, tab e interruzioni di riga tra i tab vengano gestiti come nodi di testo: 169

8 Capitolo 7: Elaborazione di dati XML con PHP $doc = new DOMDocument(); $doc->preservewhitespace = false; Esempio domdemo.php (estratto) Successivamente, occorre caricare il documento XML e assegnare un riferimento all elemento documento: $doc->load( keyword-data.xml ); $root = $doc->documentelement; Esempio domdemo.php (estratto) Recupero degli elementi Dopo aver creato il parser e caricato il file XML, è possibile richiamare informazioni dal documento. Uno dei modi più semplici di utilizzare il modello DOM consiste nel richiamare elementi servendosi del metodo getelementsbytagname. Il metodo getelementsbytagname consente di acquisire tutti gli elementi contenuti in un altro elemento che presentano un determinato nome. È possibile utilizzare questo metodo per acquisire tutti i singoli elementi keyword nel documento di esempio e memorizzarli in un array: $keywords = $root->getelementsbytagname( keyword ); Esempio domdemo.php (estratto) Dal momento che il metodo è stato richiamato sull elemento root del documento, l array $keywords contiene ora ogni singolo elemento keyword del documento XML. A questo punto è possibile eseguire un iterazione nell array $keywords per assicurarsi che ciascun elemento sia valido. Successivamente, è possibile eseguire attività di elaborazione su quell elemento. Esempio domdemo.php (estratto) echo <ul> ; foreach ($keywords as $kw) { echo <li>. htmlentities($kw->nodevalue). </li> ; echo </ul> ; Il risultato viene visualizzato nel browser Web come illustrato nella Figura 7.2, Esempio di elaborazione di parole chiave. 170

9 Recupero degli elementi Figura 7.2. Esempio di elaborazione di parole chiave Finora i risultati ottenuti sono praticamente gli stessi di quelli conseguiti con SAX. La differenza principale sta nell approccio: in SAX, è stato necessario creare funzioni personalizzate che gestissero i vari tipi di tag mano a mano che venivano rilevati dal parser; con DOM, invece, è possibile accedere ai diversi livelli della struttura gerarchica del nodo nell ordine desiderato. Per quanto concerne l uso di XML e DOM, vi è ancora un altro aspetto da sottolineare. Se si desidera modificare ciò che viene emesso come output oppure il formato delle modifiche XML, di solito è preferibile eseguire queste modifiche in DOM piuttosto che in SAX. Ad esempio, si supponga che ciascuno degli elementi keyword disponga di un attributo status, come riportato di seguito: <?xml version= 1.0 encoding= iso ?> <keywords> <keyword status= live >XML</keyword> <keyword status= in progress >PHP</keyword> <keyword status= live >Perl</keyword> <keyword status= live >Javascript</keyword> <keyword status= in progress >ASP</keyword> </keywords> Esempio keyword-data2.xml (estratto) A questo punto, si desidera visualizzare l attributo status di keyword insieme alla parola chiave. A tale scopo, occorre apportare solo una semplice modifica: 171

10 Capitolo 7: Elaborazione di dati XML con PHP Esempio domdemo2.php (estratto) echo <ul> ; foreach ($keywords as $kw) { echo <li>. htmlentities($kw->nodevalue). (. htmlentities($kw->getattribute( status )). )</li> ; echo </ul> ; Il risultato di questa piccola modifica viene illustrato nella Figura 7.3, Modifica dell elenco delle parole chiave. Figura 7.3. Modifica dell elenco delle parole chiave Per visualizzare solo le parole chiave live, è sufficiente aggiungere un semplice test if: Esempio domdemo3.php (estratto) echo <ul> ; foreach ($keywords as $kw) { if ($kw->getattribute( status ) == live ) { echo <li>. htmlentities($kw->nodevalue). </li> ; echo </ul> ; Il risultato viene illustrato nella Figura 7.4, Visualizzazione delle sole parole chiave live. 172

11 Creazione di nodi Figura 7.4. Visualizzazione delle sole parole chiave live Creazione di nodi Come evidenziato precedentemente, il modello DOM consente di aggiungere nuovi nodi e di manipolare quelli esistenti. Creare, dunque, un nuovo elemento keyword e aggiungerlo alla struttura DOM esistente. È possibile aggiungere un nuovo nodo utilizzando il metodo create_element dell oggetto DOMDocument. A tale scopo è sufficiente passare il nome del nuovo nodo e, facoltativamente, il relativo valore del nodo (il testo che dovrebbe contenere): $newkw = $doc->createelement( keyword, XSLT ); Esempio domdemo4.php (estratto) Successivamente occorre associare il nuovo nodo parola chiave alla struttura DOM. A tale scopo, è possibile utilizzare il metodo appendchild, ma è necessario indicare a DOM il punto esatto in cui si desidera aggiungere il nodo. In questo caso specifico, è sufficiente aggiungere il nuovo elemento parola chiave alla variabile $root stabilita (è bene ricordare che questa variabile rappresenta l elemento root del documento, in questo esempio, keywords). $root->appendchild($newkw); Esempio domdemo4.php (estratto) Con un documento modificato a disposizione, è possibile effettuare numerose operazioni. Una delle operazioni più comuni consiste nell emettere l output del codice XML del documento modificato in un file sul server oppure in un browser Web. 173

12 Capitolo 7: Elaborazione di dati XML con PHP Visualizzazione di codice XML da DOM La visualizzazione di una struttura DOM come codice XML è piuttosto semplice. Infatti, è sufficiente utilizzare il metodo savexml della classe DOMDocument. Impostando come prima cosa la proprietà formatoutput dell oggetto su true, è possibile generare il codice XML desiderato. Esempio domdemo4.php (estratto) $doc->formatoutput = true; echo <p>updated XML source code:</p> ; echo <pre>. htmlentities($doc->savexml()). </pre> ; Questa rapida analisi ha illustrato in maniera molto generica la funzionalità del modello DOM. Maggiori dettagli verranno forniti nel corso di questo capitolo e in quelli successivi, soprattutto quando sarà necessario ricorrere a questo modello per la creazione immediata di documenti XML. Utilizzo di SimpleXML Prima dell introduzione di SimpleXML in PHP 5, gli sviluppatori potevano manipolare ed elaborare i documenti XML solo con SAX e DOM. Entrambi gli approcci erano consolidati e affidabili, ma il loro uso presupponeva una conoscenza approfondita da parte dello sviluppatore dei processi che avrebbe creato. Con SimpleXML, come implica il nome, si semplifica il modo in cui uno sviluppatore PHP interagisce, elabora e manipola i dati XML. SimpleXML offre, infatti, grandi vantaggi. Sostanzialmente, SimpleXML carica i dati XML all interno di una gerarchia di oggetti e array di oggetti, quindi consente di accedere all array utilizzando metodi familiari quali i loop foreach e gli indici di array. In altre parole, gli sviluppatori di SimpleXML si erano resi conto che XML veniva utilizzato prevalentemente per l estrazione e l elaborazione di informazioni, quindi studiarono un modo che rendesse più semplice eseguire questo tipo di operazioni. Come è stato evidenziato nel Capitolo 4, Visualizzazione di XML in un browser, SimpleXML assegna a ciascun tag presente in un file XML una proprietà che corrisponde al relativo nome dell elemento. Esaminare il seguente documento XML: <document> <msg>hello</msg> </document> 174

13 Caricamento di documenti XML In questo caso è possibile accedere al valore del tag <msg> utilizzando la notazione freccia orientata agli oggetti di PHP, come mostrato di seguito: echo $xml->msg; Le modifiche dei nomi degli elementi influiscono sul codice PHP Uno dei grandi svantaggi di questo approccio è rappresentato dal fatto che se, per un qualsiasi motivo, i nomi degli elementi XML subiscono una modifica, sarà necessario ritornare indietro e modificare la logica SimpleXML perché vi sia corrispondenza con i nuovi nomi. Il modo migliore per evitare questo tipo di problemi consiste nell assicurarsi che i documenti XML siano definitivi e strutturati nella maniera richiesta. Se si apportano modifiche ai documenti XML dopo aver iniziato la codifica PHP, occorre intervenire anche nel codice per garantire la corrispondenza con le nuove modifiche apportate. Nelle sezioni successive verranno illustrate tutte le principali funzioni di SimpleXML. Caricamento di documenti XML Per utilizzare SimpleXML, come prima cosa occorre identificare il documento XML che si desidera elaborare. SimpleXML può caricare un file in memoria oppure lavorare sul codice XML sotto forma di una stringa PHP. Per aprire un file, utilizzare la funzione simplexml_load_file come riportato di seguito: Esempio sxmldemo.php (estratto) $keywords = simplexml_load_file( keyword-data2.xml ); È anche possibile fornire il proprio XML come variabile, quindi caricare questa variabile in memoria utilizzando la funzione simplexml_load_string: $xml = <<<XML <?xml version= 1.0 encoding= iso ?> <keywords> <keyword status= live >XML</keyword> <keyword status= in progress >PHP</keyword> <keyword status= live >Perl</keyword> <keyword status= live >JavaScript</keyword> <keyword status= in progress >ASP</keyword> </keywords> XML; $keywords = simplexml_load_string($xml); Esempio sxmldemo2.php (estratto) 175

14 Capitolo 7: Elaborazione di dati XML con PHP Dichiarazione di stringhe PHP con heredoc La stringa PHP che contiene il codice XML nell esempio sopra riportato viene dichiarata utilizzando la sintassi heredoc. Coloro che non conoscono questa sintassi possono consultare il manuale di PHP[3]. Indipendentemente dall approccio utilizzato, il risultato sarà una gerarchia di oggetti e di array chiamata $keywords. È ora possibile accedere alle diverse parti di questa struttura utilizzando la sintassi di array o di oggetti PHP standard. Gerarchia degli elementi XML Quando un elemento XML contiene più elementi figlio con lo stesso nome (come accade per l elemento keywords di questo esempio), questi elementi figlio vengono memorizzati in un array nella gerarchia degli oggetti. Pertanto è possibile utilizzare indici di array per accedere alle informazioni necessarie. Ad esempio, è possibile utilizzare la seguente sintassi per accedere alle varie parole chiave contenute nel documento XML: echo $keywords->keyword[0]; // prints XML echo $keywords->keyword[1]; // prints PHP Si noti che, in ogni caso, si utilizza l oggetto $keywords, che rappresenta l elemento root del documento, seguito dall operatore freccia e dal nome del nodo figlio a cui si è interessati (in questo caso, keyword). Poiché si tratta di un array, si utilizza keyword[0] per accedere al primo elemento keyword. Per accedere al secondo, si utilizza keyword[1] e così via. Per ottenere, invece, tutti i valori di un array di elementi XML creato da SimpleXML, è possibile utilizzare un semplice loop foreach PHP: Esempio sxmldemo.php/sxmldemo2.php (estratto) echo <ul> ; foreach ($keywords->keyword as $kw) { echo <li>. htmlentities($kw). </li> ; echo </ul> ; Quando un elemento contiene solo un elemento figlio di un determinato tipo, non viene creato alcun array. Infatti, è possibile accedere all elemento direttamente. Si supponga che il file XML che si sta utilizzando sia più complesso e che contenga un altro livello di elementi: nodi figlio di ciascun elemento keyword. Il file potrebbe risultare come riportato di seguito: [3] 176

15 Gerarchia degli elementi XML <keywords> <keyword status= live > <name>xml</name> <url> </keyword> <keyword status= in progress > <name>php</name> <url> </keyword> </keywords> Per visualizzare i valori degli elementi name e url per il primo elemento keyword, procedere come riportato di seguito: echo $keywords->keyword[0]->name; // XML echo $keywords->keyword[0]->url; // Come è possibile notare, il procedimento è davvero molto semplice. Infatti, è molto più semplice lavorare con SimpleXML che non utilizzare una struttura DOM oppure dichiarare gestori SAX personalizzati. Gli oggetti elemento SimpleXML possono essere utilizzati laddove sono richieste stringhe e si comporteranno come tali, includendo il valore di testo contenuto nel corrispondente elemento XML. Tuttavia, è importante ricordare che, di fatto, questi oggetti non sono stringhe. Questa distinzione scatta nei casi in cui non è richiesta una stringa e pertanto PHP non eseguirà la conversione. Segue un esempio: if ($keywords->keyword[0] == XML ) { echo The first keyword is XML. ; Analizzando il documento XML di esempio ci si aspetterebbe che questa l istruzione if faccia eseguire l istruzione successiva e visualizzare il messaggio, ma ciò non si verifica in quanto $keywords->keyword[0] è un oggetto e come tale non è uguale alla stringa XML. Perché questo codice si comporti come previsto, è necessario eseguire la conversione attraverso l esecuzione del cast dell oggetto in una stringa: if ((string)$keywords->keyword[0] == XML ) { echo The first keyword is XML. ; 177

16 Capitolo 7: Elaborazione di dati XML con PHP Se non si conosce bene PHP, potrebbe risultare alquanto difficile capire quando occorre eseguire la conversione e quando invece questa operazione verrà eseguita da PHP. Gli esempi contenuti in questo manuale dovrebbero chiarire questo aspetto, ma in caso di dubbi, si consiglia di eseguire il cast del valore in una stringa: in tal modo, si avrà sempre la certezza che PHP gestirà il valore nella maniera prevista. Valori degli attributi XML È possibile accedere al valore di un attributo gestendo l oggetto elemento come array e utilizzando il nome dell attributo come chiave di array. Ad esempio, per visualizzare il valore dell attributo status del primo elemento keyword, è possibile utilizzare la seguente istruzione: echo $keywords->keyword[0][ status ]; // prints live Tuttavia, con i valori degli elementi, il discorso si complica quando si tenta di confrontare valori degli attributi con stringhe PHP, in quanto sono fondamentalmente oggetti. Ad esempio, si supponga di voler visualizzare solo parole chiave live. In tal caso, si potrebbe procedere come riportato di seguito: foreach ($keywords->keyword as $kw) { if ($kw[ status ] == live ) { // wrong! echo <li>. htmlentities($kw). </li> ; Questo frammento di codice sembra accettabile. Tuttavia, dal momento che PHP non può eseguire il confronto di due entità diverse, in questo caso, oggetti e stringhe, nessuna delle parole chiave verrà visualizzata. Pertanto, è necessario eseguire il cast dell oggetto attributo in una stringa: foreach ($keywords->keyword as $kw) { if ((string)$kw[ status ] == live ) { echo <li>. htmlentities($kw). </li> ; Esempio sxmldemo3.php (estratto) In questo caso si è scelto di imboccare la strada più difficile. Tuttavia, grazie a Xpath esiste un metodo più semplice per filtrare i valori che vengono richiamati da un documento XML. 178

17 Query XPath Query XPath Esiste un altro modo per filtrare elementi XML basati sul valore di un attributo, che implica l uso del metodo xpath incontrato nel Capitolo 4, Visualizzazione di XML in un browser. Come già evidenziato, questo metodo consente di passare query XPath in SimpleXML e di ricevere i risultati sotto forma di array. Il modo più semplice per acquisire tutti gli elementi keyword il cui attributo status sia impostato su live consiste nell eseguire la query XPath riportata di seguito dall elemento keyword nel documento: keyword[@status= live ] Questa query esaminerà tutti gli elementi keyword che sono elementi figlio dell elemento corrente ed estrarrà tutti quelli il cui status sia live. Di seguito viene illustrato come effettuare questa operazione con SimpleXML: Esempio sxmldemo4.php (estratto) foreach ($keywords->xpath( keyword[@status= live ] ) as $kw) { echo <li>. htmlentities($kw). </li> ; Ma quali sono i vantaggi che offre una query XPath? In primo luogo, non è più necessario eseguire un confronto tra stringhe all interno di PHP: questa operazione viene gestita da XPath. Se si ha familiarità con lo sviluppo di database in PHP, questo tipo di operazione equivale a consentire a una istruzione SQL di eseguire il filtraggio dei valori di database prima di restituirli nello script. In secondo luogo, il codice risulta ora meno complesso e, fortunatamente, anche più semplice da gestire. Analizzando il secondo costrutto, si può ritenere questo approccio molto più complicato che non eseguire il cast di un oggetto in una stringa per il confronto. Tuttavia, la difficoltà e la semplicità di un approccio sono relative. Utilizzo di SimpleXML per aggiornare codice XML Un altro dei grandi vantaggi offerti da SimpleXML è rappresentato dal fatto che consente di aggiornare i valori in maniera molto semplice. Si supponga di voler modificare la terza parola chiave dell esempio da PHP a JSP. Di seguito viene mostrato come procedere: 179

18 Capitolo 7: Elaborazione di dati XML con PHP $keywords->keyword[2] = JSP ; Per modificare il valore di un attributo, è sufficiente aggiungere il nome dell attributo appropriato come chiave di array: $keywords->keyword[2][ status ] = live ; Per salvare oppure visualizzare il codice XML aggiornato, utilizzare il metodo asxml: echo $keywords->asxml(); Correzione di problemi SimpleXML con DOM SimpleXML, pur nella sua semplicità ed eleganza, presenta alcuni svantaggi. In primo luogo, non è possibile (al momento della scrittura) aggiungere nuovi nodi a un documento XML, ma solo modificare i valori di quelli esistenti. Non è possibile neppure eliminare nodi. Non è possibile associare fogli di stile al proprio XML per eseguire trasformazioni. Infine, come è stato possibile notare, il codice PHP dipende fortemente dai nomi dei tag XML: se questi vengono modificati, l aggiornamento del codice può essere una vera seccatura. Ad ogni modo, SimpleXML dispone di una funzione davvero comoda che gli consente di interoperare con altre funzionalità XML PHP. Precisamente, questa funzionalità permette di importare documenti DOM e di convertirli in strutture di dati SimpleXML. Ma quali sono i vantaggi? Questa funzionalità consente di attuare la parte più impegnativa della funzionalità DOM nativa in PHP; successivamente è possibile convertirla in SimpleXML e completare il lavoro. Per comprendere quanto appena illustrato attraverso un esempio pratico, caricare un documento con DOM e apportarvi una modifica che non sarebbe possibile eseguire con SimpleXML: $doc = new DOMDocument(); $doc->preservewhitespace = false; $doc->load( keyword-data2.xml ); $root = $doc->documentelement; Esempio sxmldemo5.php (estratto) $newkw = $doc->createelement( keyword, JSP ); $newkw->setattribute( status, live ); $root->appendchild($newkw); Con un nuovo elemento aggiunto alla struttura DOM, è possibile utilizzare la funzione simplexml_import_dom per importarlo in una struttura di dati SimpleXML. Successivamente, 180

19 Quando utilizzare i diversi metodi è possibile utilizzare l API SimpleXML per eseguire tutte le operazioni richieste: ad esempio, ricercare e visualizzare nodi con un determinato valore di attributo. Esempio sxmldemo5.php (estratto) $keywords = simplexml_import_dom($doc); echo <ul> ; foreach ($keywords->xpath( keyword[@status= live ] ) as $kw) { echo <li>. htmlentities($kw). </li> ; echo </ul> ; Questo codice consente di visualizzare un elenco di parole chiave il cui status è live, compresa JSP, che è stata aggiunta utilizzando DOM. Quando utilizzare i diversi metodi A questo punto è lecito domandarsi quando è appropriato utilizzare SAX, DOM e/o SimpleXML. Di seguito vengono elencate alcune regole generali: Nel caso di un documento XML molto semplice che richiede unicamente una elaborazione lineare e che non deve essere modificato, SAX rappresenta la scelta appropriata. Se occorre elaborare un documento XML più complesso, ma al solo scopo di estrarre informazioni, SimpleXML rappresenta la scelta appropriata. Se occorre creare nuovi documenti XML oppure apportare modifiche sostanziali a documenti esistenti, utilizzare DOM. Progetto CMS A questo punto è possibile creare le funzionalità di amministrazione del progetto CMS. Gli strumenti di amministrazione di cui si dispone consentiranno agli utenti autorizzati di collegarsi a CMS e di amministrare le varie parti del sito Web. Più specificamente, si procederà alla realizzazione delle seguenti funzionalità: pagina di accesso/verifica indice amministrativo (da cui gli utenti di CMS possono accedere ad altre pagine) pagina per la creazione di nuovi articoli 181

20 Capitolo 7: Elaborazione di dati XML con PHP pagina per la modifica degli articoli pagina per l eliminazione degli articoli Dopo aver creato queste pagine, il discorso sullo strumento di amministrazione verrà temporaneamente interrotto e ripreso poi nell Appendice B, Strumento di amministrazione di CMS, in quanto gran parte delle informazioni è piuttosto ripetitiva e può essere trattata in una sezione a parte. Questa trattazione include: pagine per la creazione/modifica/eliminazione di notizie pagine per la creazione/modifica/eliminazione di file binari pagine per la creazione/modifica/eliminazione di categorie pagine per la creazione/modifica/eliminazione di amministratori Tutte le pagine dell area di amministrazione si trovano nella directory admin del sito. Disabilitazione della funzione magic quotes Tutti gli script PHP presenti in questo libro presuppongono che la funzione magic quotes di PHP sia disabilitata. Per disabilitare questa funzione, impostare l opzione magic_quotes_gpc contenuta nel file php.ini del proprio server su Off. Se questa funzione viene lasciata attiva, quando si manipola il contenuto utilizzando gli script di amministrazione che verranno sviluppati in questa sezione e nell Appendice B, Strumento di amministrazione di CMS, il contenuto presenterà numerose barre rovesciate (\) indesiderate. Pagina di accesso La pagina di accesso è molto semplice. Si basa su un elementare form HTML che consente agli amministratori di specificare il proprio nome utente e la propria password. Questo form diventerà più complesso quando si strutturerà l HTML in modo che possa essere efficacemente stilizzato grazie all applicazione di un CSS. <?php session_start();?> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <title>please Log In</title> <meta http-equiv= Content-Type content= text/html; charset=iso > Esempio login.php 182

21 Pagina di accesso <link rel= stylesheet type= text/css href=../xmlcms.css /> <link rel= stylesheet type= text/css href= login.css /> </head> <body> <form class= login action= verify.php method= post > <h1>please log in</h1> <div class= fields > <label for= username >User name</label> <input type= text id= username name= username class= text /> <label for= password >Password</label> <input type= password id= password name= password class= password /> </div> <div class= actions > <input type= submit value= Submit /> <input type= reset value= Reset /> </div> <p class= error ><?php echo $_SESSION[ error ];?></p> </form> </body> </html> Oltre al foglio di stile del sito di base (xmlcms.css), questa pagina utilizza un foglio di stile specifico per il layout del form di accesso. Come già evidenziato in precedenza, non essendo questo un manuale dedicato ai fogli di stile CSS, i dettagli relativi a questo file verranno tralasciati, ma per una questione di completezza di seguito ne viene fornito il codice: form.login { width: 290px; margin: 1em auto; padding: 4px; background: #ccc; form.login h1 { text-align: center; font-size: medium; background: #fff; margin: 1px; form.login.fields { text-align: right; form.login label { float: left; width: 130px; text-align: right; Esempio login.css 183

22 Capitolo 7: Elaborazione di dati XML con PHP form.login.actions { text-align: center; form.login input.text, form.login input.password { width: 150px; margin-bottom: 1px; form.login.error { color: red; margin: 0; padding: 0; Analizzando la pagina di accesso, è possibile notare che l elemento action del form è impostato su una pagina denominata verify.php. La logica PHP contenuta in questa pagina deve verificare i valori immessi in un elenco di amministratori che si trova in admin.xml. Protezione dei file XML Ai fini degli esempi proposti in questo manuale e per l archiviazione del relativo codice, i file XML in cui si trovano il contenuto, le categorie, gli autori e gli utenti amministrativi sono stati inseriti in una sottodirectory del sito principale. Tuttavia, per proteggere ulteriormente le informazioni riservate contenute in questi file come, ad esempio, la crittografia delle password degli amministratori, fare in modo che i visitatori occasionali del sito non abbiano accesso diretto a questi file. Per proteggere questi file, è possibile configurare il server Web in modo che impedisca ai browser di accedere alla directory oppure è possibile spostare la directory all esterno della struttura di directory del sito accessibile dal Web. Nel secondo caso, sarà necessario modificare il file common.inc.php perché punti alla nuova ubicazione della directory, in modo che tutti gli script del sito possano trovare i file XML. Password crittografate Come è stato possibile notare, i valori delle password memorizzati in admin.xml vengono crittografati, così da garantire maggiore protezione. Per utilizzare il file di esempio admin.xml incluso nell archivio del codice per questo libro, occorre sapere che la password iniziale di tutti e tre gli amministratori memorizzata in quel file (joe, bill e tom) è password. In caso di corrispondenza, il codice PHP imposterà una variabile di sessione e reindirizzerà l utente verso la pagina dell indice di amministrazione. In caso contrario, PHP riporterà l utente di nuovo alla pagina login.php, con una variabile di sessione speciale ($_SESSION[ error ]) contenente un messaggio di errore da visualizzare. 184

23 Pagina di accesso Il codice specifico viene riportato di seguito. Si noti che in questo caso si è scelto di utilizzare SimpleXML, in quanto è il metodo più veloce per caricare le informazioni da admin.xml. <?php include_once../common.inc.php ; Esempio verify.php $admins = simplexml_load_file($filedir. admin.xml ); foreach ($admins->admin as $admin) { if ($_POST[ username ] == (string)$admin->username and crypt($_post[ password ], (string)$admin->password) == (string)$admin->password) { $_SESSION[ login ] = true; header( location: index.php ); exit; $_SESSION[ error ] = Wrong user name or password. Try again. ; header( location: login.php );?> Inoltre, quando vengono crittografate le password in admin.xml, occorre accettare la password fornita dall utente, crittografarle allo stesso modo, quindi confrontare l input utente con la password memorizzata nel file XML. Se non si ha familiarità con la funzione crypt di PHP, è possibile consultare il manuale di PHP[4]. Dal momento che chiunque può immettere un URL per una delle pagine di amministrazione, è necessario garantire per il contenuto di queste pagine una maggiore protezione. Nella parte superiore di ciascuna pagina, occorre verificare se il valore della variabile di sessione $_SESSION[ login ] è impostato su true. Se questo valore non è impostato su true, l utente verrà indirizzato di nuovo verso la pagina login.php. Dal momento che questa funzionalità verrà utilizzata di nuovo, si consiglia di inserire questa verifica all interno di un file delle inclusioni: <?php include_once../common.inc.php ; Esempio security.inc.php if (@$_SESSION[ login ]!== true) { header( location: login.php ); $_SESSION[ error ] = You must log in before you can access administration pages. ; exit;?> [4] 185

24 Capitolo 7: Elaborazione di dati XML con PHP Disabilitazione della protezione per la configurazione iniziale Quando si configura il sito per la prima volta, è possibile che non siano stati ancora creati degli amministratori. Ci si chiede dunque come fare ad aggiungere amministratori se non è possibile eseguire l accesso. Per aggiungere i primi account amministratore, è necessario disabilitare la protezione: a tale scopo, annullare i commenti del contenuto del file security.inc.php, in modo che il file non possa eseguire alcuna azione. Successivamente, è necessario abilitare la visualizzazione libera delle pagine di amministrazione e aggiungere uno o due amministratori. Dopo di che, è possibile abilitare di nuovo la protezione e collegarsi utilizzando uno degli account appena creati. In ultimo, occorre creare una pagina di logout a cui collegarsi in modo che gli utenti possano scollegarsi e uscire dal sito prima di abbandonare la propria postazione: <?php include_once../common.inc.php ; Esempio logout.php $_SESSION[ login ] = false; header( location: index.php );?> Pagina dell indice amministrativo La prima pagina dello strumento di amministrazione fornisce accesso a tutte le funzionalità e all intero contenuto del sito, compresi gli utenti amministrativi, gli articoli, i news item e altri tipi di contenuto. Il codice per questa pagina è molto conciso. È necessario fornire collegamenti a ciascuna delle principali parti dello strumento di amministrazione. <?php include security.inc.php ;?> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <meta http-equiv= Content-Type content= text/html; charset=iso /> <title>welcome to the Admin Index Page</title> <link rel= stylesheet type= text/css href=../xmlcms.css /> Esempio index.php 186

25 Utilizzo degli articoli </head> <body> <h1>welcome to the Admin Index Page</h1> <p> <a href= articletool.php >Manage Articles</a><br /> <a href= newstool.php >Manage News Items</a><br /> <a href= admintool.php >Manage Administrators</a> </p> <p><a href= logout.php >Log out</a></p> </body> </html> Ciascuna delle aree rappresentate da questi collegamenti avrà la stessa funzionalità. Ogni singola area consentirà agli utenti di CMS di creare, modificare ed eliminare item. Nelle sezioni successive verranno analizzate le singole attività per la prima area: gli articoli. Utilizzo degli articoli L area di amministrazione degli articoli consente agli utenti di CMS di creare nuovi articoli, modificare quelli esistenti e di eliminare articoli quando occorre. Dal momento che gli articoli sono la parte più importante del sito, si partirà da essi per poi procedere con i news item e gli amministratori del sito nell Appendice B, Strumento di amministrazione di CMS. Per la pagina principale dell area di amministrazione degli articoli, sarà necessario un elenco di tutti gli articoli presenti sul sito. Poiché si suppone di aver acquisito sufficiente dimestichezza con il codice PHP, questa operazione non dovrebbe risultare troppo complicata: Esempio articletool.php <?php include security.inc.php ; include_once../common.inc.php ;?> <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <meta http-equiv= Content-Type content= text/html; charset=iso /> <title>article Index</title> <link rel= stylesheet type= text/css href=../xmlcms.css /> </head> <body> <h1>article Index</h1> 187

26 Capitolo 7: Elaborazione di dati XML con PHP <p><a href= articletool_create.php >Create New Article</a></p> <p><a href= index.php >Cancel</a></p> <ul> <?php $handle = opendir($filedir); while (($file = readdir($handle))!== FALSE) { if (is_dir($filedir. $file)) continue; if (!eregi( ^article.*\.xml$, $file)) continue; $articlefile = simplexml_load_file($filedir. $file); echo <li>. htmlentities($articlefile->headline); echo <a href= articletool_edit.php?id=. $articlefile[ id ]. >edit</a> ; echo <a href= doarticledelete.php?id=. $articlefile[ id ]. >delete</a></li> ;?> </ul> </body> </html> Creazione di nuovi articoli La pagina di creazione degli articoli è molto importante, in quanto consente agli amministratori del sito di creare nuovi articoli XML sul sito utilizzando un semplice form Web. Ciascuno dei campi del form è associato a un elemento nella struttura del documento XML pianificata nel Capitolo 1, Introduzione a XML, e modificata nel Capitolo 3, DTD per la consistenza. Gli articoli creati dovrebbero risultare come quello riportato di seguito: <?xml version= 1.0 encoding= iso ?> <article id= article > <authorid>1</authorid> <categoryid>1</categoryid> <headline>using XML with PHP</headline> <description>php offers many ways to work with XML</description> <pubdate> </pubdate> <status>live</status> <keywords>xml PHP SAX DOM SimpleXML</keywords> <body><![cdata[ <h1>using XML with PHP</h1> <p>php is very powerful. It offers many ways to work with XML.</p> ]]></body> </article> 188

27 Creazione di nuovi articoli In particolare, è bene ricordare che occorre generare un ID univoco e compilare tutte le varie parti dei metadati. Creare un form che contenga campi per tutte queste informazioni. Iniziare con la verifica che permette di assicurarsi che l utente è collegato: <?php include security.inc.php ; include_once../common.inc.php ;?> Esempio articletool_create.php (estratto) Iniziare ora la creazione del codice HTML, includendo un collegamento a un nuovo foglio di stile denominato forms.css, che conterrà le regole per il layout di form di amministrazione piuttosto complessi come quello riportato di seguito: Esempio articletool_create.php (estratto) <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN > <html xmlns= > <head> <meta http-equiv= Content-Type content= text/html; charset=iso /> <title>create a New Article</title> <link rel= stylesheet type= text/css href=../xmlcms.css /> <link rel= stylesheet type= text/css href= forms.css /> </head> <body> Infine, creare il form. Il form è costituito prevalentemente da semplici campi, ma per selezionare un autore e una categoria occorrono elenchi dinamici che verranno estratti dai file appropriati utilizzando SimpleXML. Esempio articletool_create.php (estratto) <h1>create a New Article</h1> <p><a href= articletool.php >Cancel</a></p> <form action= doarticlecreate.php method= post > <div class= fields > <p> <label for= headline >Headline</label> <input type= text id= headline name= headline class= text /> </p> <p> <label for= author >Author</label> <select id= authorid name= authorid > <?php 189

28 Capitolo 7: Elaborazione di dati XML con PHP $authors = simplexml_load_file($filedir. authors.xml ); foreach ($authors->author as $author) { echo <option value=. htmlentities($author[ id ]). >. htmlentities($author->name). </option> ;?> </select> </p> <p> <label for= category >Category</label> <select id= categoryid name= categoryid > <?php $cats = simplexml_load_file($filedir. categories.xml ); foreach ($cats->category as $cat) { echo <option value=. htmlentities($cat[ id ]). >. htmlentities($cat[ label ]). </option> ;?> </select> </p> <p> <label for= status >Status</label> <select id= status name= status > <option value= in progress >In Progress</option> <option value= live >Live</option> </select> </p> <p> <label for= keywords >Keywords</label> <input type= text id= keywords name= keywords class= text /> </p> <p> <label for= description >Description</label> <textarea id= description name= description ></textarea> </p> <p> <label for= body >Article Body (HTML)</label> <textarea id= body name= body ></textarea> </p> </div> <div class= actions > <input type= submit value= Add Article /> <input type= reset value= Reset /> </div> </form> </body> </html> 190

29 Creazione di nuovi articoli Di seguito viene riportato il codice del foglio di stile che esegue il layout di questo complesso form: form.actions { text-align: center; form p { clear: left; margin: 1px 0; form label { float: left; width: 15%; padding-right: 10px; text-align: right; input.text, input.password, select { width: 300px; textarea { width: 70%; height: 4em; textarea#body { height: 30em; Esempio forms.css L action del form è impostata sulla pagina doarticlecreate.php, che utilizza funzioni DOM per creare un articolo XML dalle informazioni contenute nel form. Dal momento che si tratta di un passaggio molto complesso, il codice verrà riportato e analizzato a blocchi. La prima parte del file è l inizio del nuovo documento XML, in cui viene impostata la versione e creato l elemento root, article. <?php include security.inc.php ; include_once../common.inc.php ; Esempio doarticlecreate.php (estratto) $doc = new DOMDocument(); $root = $doc->createelement( article ); $root = $doc->appendchild($root); 191

30 Capitolo 7: Elaborazione di dati XML con PHP Successivamente, viene aggiunto un attributo id al nodo article. L ID sarà composto dal termine article seguito da un timestamp. Nel caso in cui si creino contemporaneamente più di un articolo, ricercare un file esistente il cui nome contenga lo stesso ID e incrementare il timestamp di un unità fino a individuare un ID che non crei conflitti. Esempio doarticlecreate.php (estratto) $timestamp = date( YmdHis ); do { $id = article. $timestamp++; while (file_exists($filedir. $id..xml )); $root->setattribute( id, $id); Dopo aver creato l elemento root, occorre creare, nell ordine appropriato, i relativi elementi figlio. Il primo è authorid. Si noti che l elemento authorid è un elemento figlio di article e che lo stesso ID è un elemento figlio di authorid. Esempio doarticlecreate.php (estratto) $author = $doc->createelement( authorid ); $root->appendchild($author); $atext = $doc->createtextnode($_post[ authorid ]); $author->appendchild($atext); Viene utilizzata la stessa tecnica illustrata sopra per generare gli elementi categoryid, headline, description, status e keywords. Il valore di pubdate viene generato dallo script, ma per il resto è lo stesso. Esempio doarticlecreate.php (estratto) $cat = $doc->createelement( categoryid ); $root->appendchild($cat); $ctext = $doc->createtextnode($_post[ categoryid ]); $cat->appendchild($ctext); $head = $doc->createelement( headline ); $root->appendchild($head); $htext = $doc->createtextnode($_post[ headline ]); $head->appendchild($htext); $desc = $doc->createelement( description ); $root->appendchild($desc); $dtext = $doc->createtextnode($_post[ description ]); $desc->appendchild($dtext); $pub = $doc->createelement( pubdate ); $root->appendchild($pub); $pubtext = $doc->createtextnode(date( Y-m-d )); $pub->appendchild($pubtext); 192

XML e PHP. Gestire XML con PHP. Appendice

XML e PHP. Gestire XML con PHP. Appendice Appendice XML e PHP Tra tutti i linguaggi di programmazione esistenti PHP è tra quelli che meglio si adattano all elaborazione di documenti XML. PHP è un linguaggio di programmazione che consente di arricchire

Dettagli

La pagina Web modulo.html utilizza le specifiche di stile descritte nel foglio feedback.css.

La pagina Web modulo.html utilizza le specifiche di stile descritte nel foglio feedback.css. Moduli di feedback Uno degli strumenti per l interattività con gli utenti è la pagina per raccogliere suggerimenti o commenti dai visitatori, formata da moduli sul video da riempire con il nome del mittente,

Dettagli

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28 Indice 25 184 Introduzione XI Capitolo 1 Impostazione dell ambiente di sviluppo 2 1.1 Introduzione ai siti Web dinamici 2 1.2 Impostazione dell ambiente di sviluppo 4 1.3 Scaricamento di Apache 6 1.4 Installazione

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet Java Server Pages (JSP) Introduzione alle JSP Linguaggio di scripting lato server HTML-embedded Una pagina JSP contiene sia HTML sia codice Il client effettua la richiesta per la pagina JSP La parte HTML

Dettagli

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web

Dettagli

CONTENUTI 1. INTRODUZIONE...3 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 3. ACCESSO A EQUINOX CMS XPRESS...9 4. PAGINA D INIZIO...

CONTENUTI 1. INTRODUZIONE...3 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 3. ACCESSO A EQUINOX CMS XPRESS...9 4. PAGINA D INIZIO... CONTENUTI 1. INTRODUZIONE...3 DEFINIZIONE...3 ELEMENTI DEL SERVIZIO...3 TECNOLOGIA E OPERAZIONE...3 WORKFLOW E GRAFICO DI PROCESSI...4 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 STRUTTURA...5 OGGETTI...5

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla!

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla! Guida di Virtuemart INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla! INDICE INDICE... 1 INTRODUZIONE... 2 DONWLOAD... 2 INSTALLAZIONE... 2 REQUISITI MINIMI... 3 PASSAGGIO 1... 4 PASSAGGIO 2...

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

BDCC : Guida rapida all utilizzo

BDCC : Guida rapida all utilizzo BDCC : Guida rapida all utilizzo 1 Sommario 1. Funzionamento del sistema... 3 1.1 Cos è e cosa contiene la BDCC... 3 1.2 Meccanismi di funzionamento della BDCC... 3 1.3 Organizzazione di contenuti all

Dettagli

XSL: extensible Stylesheet Language

XSL: extensible Stylesheet Language XSL: extensible Stylesheet Language XSL è un insieme di tre linguaggi che forniscono gli strumenti per l elaborazione e la presentazione di documenti XML in maniera molto flessibile. I tre linguaggi devono

Dettagli

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER L architettura CLIENT SERVER è l architettura standard dei sistemi di rete, dove i computer detti SERVER forniscono servizi, e computer detti CLIENT, richiedono

Dettagli

Consultazione Documenti

Consultazione Documenti Consultazione Documenti 1 SOMMARIO Accesso alla Procedura Lato azienda...3 Caratteristiche dell Applicazione dialogo-web...3 Modifica Password...6 Accesso negato ai servizi On line di Nuova Informatica...7

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas PHP A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas Copyright Istituto Italiano Edizioni Atlas Programmazione lato server PHP è un linguaggio che estende le funzionalità

Dettagli

PIATTAFORMA DOCUMENTALE CRG

PIATTAFORMA DOCUMENTALE CRG SISTEMA DI GESTIONE DOCUMENTALE DMS24 PIATTAFORMA DOCUMENTALE CRG APPLICAZIONE PER LE PROCEDURE DI GARE D AMBITO 1 AGENDA 1. Introduzione 2. I Livelli di accesso 3. Architettura di configurazione 4. Accesso

Dettagli

Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo Webservice

Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo Webservice - Albo pretorio virtuale e gestione della consultazione documentale - Argomenti Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo

Dettagli

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l. Progetto SITI Manuale Utente SITI-Reports ABACO S.r.l. ABACO S.r.l. C.so Umberto, 43 46100 Mantova (Italy) Tel +39 376 222181 Fax +39 376 222182 www.abacogroup.eu e-mail : info@abacogroup.eu 02/03/2010

Dettagli

Dott.ssa Maria Vittoria Avolio. Dott.ssa Adriana Pietramala

Dott.ssa Maria Vittoria Avolio. Dott.ssa Adriana Pietramala Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Maria Vittoria Avolio avoliomv@unical.it Dott.ssa Adriana Pietramala a.pietramala@unical.it Riferimenti Manuale PHP http://www.php.net/download-docs.php

Dettagli

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO 1 Installazione e requisiti per il corretto funzionamento del sito: L istallazione è possibile sui più diffusi sistemi operativi. Il pacchetto

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO Pag. 1 di 17 VERIFICHE E APPROVAZIONI VERSIONE V01 REDAZIONE CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA PRATESI STATO DELLE VARIAZIONI VERSIONE PARAGRAFO O DESCRIZIONE

Dettagli

MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER

MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER MANUALE PER LA GESTIONE DEL SERVIZIO DI NEWSLETTER HNewsletter: Servizio di Newsletter HNewsletter è un applicazione che permette di inviare un solo messaggio di posta elettronica ad un elenco di indirizzi

Dettagli

Gestione Risorse Umane Web. Gestione della foto in stampa unione. Versione V01

Gestione Risorse Umane Web. Gestione della foto in stampa unione. Versione V01 Gestione Risorse Umane Web Gestione della foto in stampa unione Versione V01 1 Sommario...2 Premessa...3 Gestione manuale del modello di stampa unione...4 Definizione dei campi che compongono l estrazione...4

Dettagli

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15 WG TRANSLATE Pagina 1 di 15 Sommario WG TRANSLATE... 1 1.1 INTRODUZIONE... 3 1 TRADUZIONE DISPLAY FILE... 3 1.1 Traduzione singolo display file... 4 1.2 Traduzione stringhe da display file... 5 1.3 Traduzione

Dettagli

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE S O. S E. B I. P R O D O T T I E S E R V I Z I P E R I B E N I C U L T U R A L I So.Se.Bi. s.r.l. - via dell Artigianato, 9-09122 Cagliari Tel. 070 / 2110311

Dettagli

Settimana I...1. Giorno 1 - Introduzione all XSLT...3

Settimana I...1. Giorno 1 - Introduzione all XSLT...3 Settimana I...1 Giorno 1 - Introduzione all XSLT...3 Generalità su XSLT...3 Introduzione a XML e XSLT... 4 Cos è XSLT?... 5 Che cosa fa XSLT?... 6 Come si presenta XSLT?... 6 XSLT e la famiglia di XML...

Dettagli

Obiettivo dell esercitazione

Obiettivo dell esercitazione Database e Web - Esercitazioni ASP - Andrea Proli proliand@csr.unibo.it Laboratorio di Basi di Dati A.A. 2005/2006 Obiettivo dell esercitazione L obiettivo finale dell esercitazione è quello di creare

Dettagli

Manuale Utente Albo Pretorio GA

Manuale Utente Albo Pretorio GA Manuale Utente Albo Pretorio GA IDENTIFICATIVO DOCUMENTO MU_ALBOPRETORIO-GA_1.4 Versione 1.4 Data edizione 04.04.2013 1 TABELLA DELLE VERSIONI Versione Data Paragrafo Descrizione delle modifiche apportate

Dettagli

Novità di Access 2010

Novità di Access 2010 2 Novità di Access 2010 In questo capitolo: Gestire le impostazioni e i file di Access nella visualizzazione Backstage Personalizzare l interfaccia utente di Access 2010 Creare database utilizzando modelli

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

Indice. Introduzione. Capitolo 1

Indice. Introduzione. Capitolo 1 Indice Introduzione XI Capitolo 1 Pagine dei fornitori: applicazione dei fogli di stile CSS in XML 1 1.1 Introduzione a HTML e XHTML 1 1.2 Controllo della presentazione: fogli di stile CSS 8 1.3 Approfondimento

Dettagli

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS

XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS XML INVITO ALLO STUDIO EUROPEAN NETWORK OF INNOVATIVE SCHOOLS CSS e XML Per formatare i documenti XML è possibile seguire due strade: Quando non c è bisogno della potenza elaborativa di XSL, l utilizzo

Dettagli

NAVIGAZIONE DEL SI-ERC: UTENTE PROGETTISTA

NAVIGAZIONE DEL SI-ERC: UTENTE PROGETTISTA 3 NAVIGAZIONE DEL SI-ERC: UTENTE PROGETTISTA Collegandosi al sito, si accede alla Home Page del SI-ERC che si presenta come illustrato di seguito. L utente progettista, analogamente agli altri utenti,

Dettagli

MANUALE D USO DELLA PIATTAFORMA ITCMS

MANUALE D USO DELLA PIATTAFORMA ITCMS MANUALE D USO DELLA PIATTAFORMA ITCMS MANULE D USO INDICE 1. INTRODUZIONE... 2 2. ACCEDERE ALLA GESTIONE DEI CONTENUTI... 3 3. GESTIONE DEI CONTENUTI DI TIPO TESTUALE... 4 3.1 Editor... 4 3.2 Import di

Dettagli

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it Decreto Legislativo 196/2003 Codice in materia di protezione dei dati personali COOKIE POLICY La presente informativa è resa anche ai sensi dell art. 13 del D.Lgs 196/03 Codice in materia di protezione

Dettagli

Siti interattivi e dinamici. in poche pagine

Siti interattivi e dinamici. in poche pagine Siti interattivi e dinamici in poche pagine 1 Siti Web interattivi Pagine Web codificate esclusivamente per mezzo dell HTML non permettono alcun tipo di interazione con l utente, se non quella rappresentata

Dettagli

Manuale per i redattori del sito web OttoInforma

Manuale per i redattori del sito web OttoInforma Manuale per i redattori del sito web OttoInforma Contenuti 1. Login 2. Creare un nuovo articolo 3. Pubblicare l articolo 4. Salvare l articolo in bozza 5. Le categorie 6. Modificare un articolo 7. Modificare

Dettagli

Esercizi di JavaScript

Esercizi di JavaScript Esercizi di JavaScript JavaScript JavaScript é un linguaggio di programmazione interpretato e leggero, creato dalla Netscape. E' presente a patire da Netscape 2 in tutti i browser ed é dunque il linguaggio

Dettagli

Impostazione WEB per i Campionati provinciali 2008-2009

Impostazione WEB per i Campionati provinciali 2008-2009 Impostazione WEB per i Campionati provinciali 2008-2009 LEGGERE CON ATTENZIONE Il C. P. Ancona ha trasferito su un server dedicato tutta la gestione dei Campionati Provinciali 2008-2009, come già avvenuto

Dettagli

Form Editor. Dove NomeProfilo è personalizzabile.

Form Editor. Dove NomeProfilo è personalizzabile. Form Editor Il tema permette di generare automaticamente dei moduli per la raccolta di dati in tre semplici step: 1. Si crea una tabella nel database per la raccolta dei dati. Per la creazione si parte

Dettagli

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori. Release 5.20 Manuale Operativo ORDINI PLUS Gestione delle richieste di acquisto In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori. La gestione

Dettagli

Corso basi di dati Installazione e gestione di PWS

Corso basi di dati Installazione e gestione di PWS Corso basi di dati Installazione e gestione di PWS Gianluca Di Tomassi Email: ditomass@dia.uniroma3.it Università di Roma Tre Cosa è PWS? Il Personal Web Server altro non è che una versione ridotta del

Dettagli

Product Updater Scaricamento e Installazione aggiornamento

Product Updater Scaricamento e Installazione aggiornamento Scaricamento e Installazione aggiornamento Versioni... VB e.net Rel. docum.to...1012lupu Alla cortese attenzione del Responsabile Software INDICE A) MODIFICA IMPOSTAZIONI DI PROTEZIONE CORRENTI...2 GESTIONE

Dettagli

extensible Markup Language

extensible Markup Language XML a.s. 2010-2011 extensible Markup Language XML è un meta-linguaggio per definire la struttura di documenti e dati non è un linguaggio di programmazione un documento XML è un file di testo che contiene

Dettagli

Progettazione di un Database

Progettazione di un Database Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di

Dettagli

PORTALE CLIENTI Manuale utente

PORTALE CLIENTI Manuale utente PORTALE CLIENTI Manuale utente Sommario 1. Accesso al portale 2. Home Page e login 3. Area riservata 4. Pagina dettaglio procedura 5. Pagina dettaglio programma 6. Installazione dei programmi Sistema operativo

Dettagli

Manuale Knowledge Base

Manuale Knowledge Base (Riservato a rivenditori e agenzie) Versione Luglio 2010 SOMMARIO Introduzione... 2 Accesso... 2 Menu Conoscenze... 3 Bacheca... 4 Voci di menu... 5 Ricerca... 5 Ricerca Semplice... 6 Ricerca avanzata...

Dettagli

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1 MODULO 1 PARTE 3 Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni Goy - a.a. 2012/2013 Programmazione Web 1 Cookie - I Cookie = variabili che il server salva (*) sul client come file

Dettagli

Gestione Risorse Umane Web

Gestione Risorse Umane Web La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...

Dettagli

MODULO 5 ACCESS Basi di dati. Lezione 4

MODULO 5 ACCESS Basi di dati. Lezione 4 MODULO 5 ACCESS Basi di dati Lezione 4 ARGOMENTI Lezione 4 Filtrare i dati Esempio 1 Query Cos è Creare Query in visualizza struttura Criteri di ricerca Esempio 2 Esempio 3 Esempio 4 Creare Query in creazione

Dettagli

Costruzione del layout in gino cms

Costruzione del layout in gino cms Costruzione del layout in gino cms Autore: Marco Guidotti - marco.guidotti(at)otto.to.it Versione: 1.0 Data: 2013-06-17 Layout Nell area amministrativa di gino l applicazione Layout permette di gestire

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Guida Joomla. di: Alessandro Rossi, Flavio Copes Guida Joomla di: Alessandro Rossi, Flavio Copes Grafica e template 1. 15. La grafica e i template Personalizzare l'aspetto del sito aggiungendo nuovi template e customizzandoli 2. 16. Personalizzare il

Dettagli

Manuale Gestore. STWS Web Energy Control - Servizio di telelettura sul WEB

Manuale Gestore. STWS Web Energy Control - Servizio di telelettura sul WEB Manuale Gestore STWS Web Energy Control - Servizio di telelettura sul WEB SOMMARIO 1.0 PRESENTAZIONE... 4 2.0 UTENTI... 4 2.1 GESTORE... 4 2.2 AMMINISTRATORE DI CONDOMINIO... 4 2.3 INQUILINO... 4 3.0

Dettagli

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO Login All apertura il programma controlla che sia stata effettuata la registrazione e in caso negativo viene visualizzato un messaggio.

Dettagli

I cookie sono classificati in base alla durata e al sito che li ha impostati.

I cookie sono classificati in base alla durata e al sito che li ha impostati. 1. Informativa sui cookie 1.1. Informazioni sui cookie I siti Web si avvalgono di tecniche utili e intelligenti per aumentare la semplicità di utilizzo e rendere i siti più interessanti per ogni visitatore.

Dettagli

Impostare il browser per navigare in sicurezza Opzioni di protezione

Impostare il browser per navigare in sicurezza Opzioni di protezione Impostare il browser per navigare in sicurezza Opzioni di protezione Data la crescente necessità di sicurezza e tutela dei propri dati durante la navigazione in rete, anche gli stessi browser si sono aggiornati,

Dettagli

GUIDA UTENTE... 2 Come si accede alla piattaforma del FORMAS?... 2 Quali sono i Browser da utilizzare?... 2 Quali sono le modalità di iscrizione?...

GUIDA UTENTE... 2 Come si accede alla piattaforma del FORMAS?... 2 Quali sono i Browser da utilizzare?... 2 Quali sono le modalità di iscrizione?... GUIDA UTENTE... 2 Come si accede alla piattaforma del FORMAS?... 2 Quali sono i Browser da utilizzare?... 2 Quali sono le modalità di iscrizione?... 2 Iscrizione da parte del FORMAS... 2 Quando devono

Dettagli

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia Scuola Digitale Manuale utente Copyright 2014, Axios Italia 1 SOMMARIO SOMMARIO... 2 Accesso al pannello di controllo di Scuola Digitale... 3 Amministrazione trasparente... 4 Premessa... 4 Codice HTML

Dettagli

Guida all uso delle Web View su ios

Guida all uso delle Web View su ios Guida all uso delle Web View su ios Tesina per il corso di Programmazione di Sistemi Mobile Lorenzo Pellegrini Matricola: 0000653299 Cosa sono le Web View? Le web view sono componenti grafiche, integrabili

Dettagli

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

Dettagli

DOCUMENTO ESERCITAZIONE ONENOTE. Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida

DOCUMENTO ESERCITAZIONE ONENOTE. Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida MICROSOFT OFFICE ONENOTE 2003 AUMENTA LA PRODUTTIVITÀ CONSENTENDO AGLI UTENTI L ACQUISIZIONE COMPLETA, L ORGANIZZAZIONE EFFICIENTE E IL RIUTILIZZO

Dettagli

Software Servizi Web UOGA

Software Servizi Web UOGA Manuale Operativo Utente Software Servizi Web UOGA S.p.A. Informatica e Servizi Interbancari Sammarinesi Strada Caiese, 3 47891 Dogana Tel. 0549 979611 Fax 0549 979699 e-mail: info@isis.sm Identificatore

Dettagli

flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita... 6 istruzioni per l inserimento di una richiesta on line di prodotti speciali flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita...

Dettagli

CREAZIONE DI UN AZIENDA

CREAZIONE DI UN AZIENDA CREAZIONE DI UN AZIENDA La creazione di un azienda in Businesspass avviene tramite la funzione Aziende Apertura azienda ; dalla medesima sarà possibile richiamare le aziende precedentemente create per

Dettagli

Infostat-UIF. Istruzioni per l accesso e le autorizzazioni

Infostat-UIF. Istruzioni per l accesso e le autorizzazioni Infostat-UIF Istruzioni per l accesso e le autorizzazioni Versione 1.2 1 INDICE 1. Istruzioni operative per l'utilizzo dei servizi Infostat-UIF... 3 2. Registrazione al portale Infostat-UIF... 4 2.1. Caso

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Online Help StruxureWare Data Center Expert

Online Help StruxureWare Data Center Expert Online Help StruxureWare Data Center Expert Version 7.2.7 StruxureWare Data Center ExpertDispositivo virtuale Il server StruxureWare Data Center Expert 7.2 è disponibile come dispositivo virtuale, supportato

Dettagli

Guida all upgrade alla versione 1.3.1

Guida all upgrade alla versione 1.3.1 Guida all upgrade alla versione 1.3.1 Questo documento ha lo scopo d analizzare le problematiche e individuare le soluzioni per aggiornare MWCMS da una versione precedente alla versione 1.3.1. Verifica

Dettagli

COOKIES COSA SONO I COOKIES? COME UTILIZZIAMO I COOKIES?

COOKIES COSA SONO I COOKIES? COME UTILIZZIAMO I COOKIES? COOKIES Per far funzionare bene questo sito, a volte installiamo sul tuo dispositivo dei piccoli file di dati che si chiamano cookies. Anche la maggior parte dei grandi siti fanno lo stesso. COSA SONO

Dettagli

Manuale swiss-archives.ch

Manuale swiss-archives.ch Dipartimento federale dell interno DFI Archivio federale svizzero AFS Manuale swiss-archives.ch Banca dati dell Archivio federale svizzero Indice 1 Introduzione 3 1.1 Funzioni... 4 1.2 Registrazione...

Dettagli

CONTENT MANAGEMENT SYSTEM

CONTENT MANAGEMENT SYSTEM CONTENT MANAGEMENT SYSTEM P-2 PARLARE IN MULTICANALE Creare un portale complesso e ricco di informazioni continuamente aggiornate, disponibile su più canali (web, mobile, iphone, ipad) richiede competenze

Dettagli

START Affidamenti diretti e Procedure concorrenziali semplificate. Istruzioni per i concorrenti Ver. 1.0

START Affidamenti diretti e Procedure concorrenziali semplificate. Istruzioni per i concorrenti Ver. 1.0 START Affidamenti diretti e Procedure concorrenziali semplificate Istruzioni per i concorrenti Ver. 1.0 Premessa... 1 Accesso al sistema e presentazione offerta... 1 Le comunicazioni fra l Ente ed il Concorrente...

Dettagli

Manuale Utente. Data : 01/02/2011 Versione : 1.0

Manuale Utente. Data : 01/02/2011 Versione : 1.0 Sistema Informativo di EMITTENTI Data : 01/02/2011 Versione : 1.0 Storia delle modifiche Data Versione Tipo di modifica 01/02/2011 1.0 Creazione del documento 2 Indice dei contenuti 1 Introduzione... 5

Dettagli

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

Dettagli

VIVAIO LAUDENSE RELAZIONE

VIVAIO LAUDENSE RELAZIONE VIVAIO LAUDENSE RELAZIONE Consegna Un vivaio di Lodi vuole realizzare un sito Web per gestire le proprie attività di vendita di piante e le attività esterne. Si vogliono memorizzare, oltre alle informazioni

Dettagli

CHIUSURE di MAGAZZINO di FINE ANNO

CHIUSURE di MAGAZZINO di FINE ANNO CHIUSURE di MAGAZZINO di FINE ANNO Operazioni da svolgere per il riporto delle giacenze di fine esercizio Il documento che segue ha lo scopo di illustrare le operazioni che devono essere eseguite per:

Dettagli

9243045 Edizione 1 IT. Nokia e Nokia Connecting People sono marchi registrati di Nokia Corporation

9243045 Edizione 1 IT. Nokia e Nokia Connecting People sono marchi registrati di Nokia Corporation 9243045 Edizione 1 IT Nokia e Nokia Connecting People sono marchi registrati di Nokia Corporation Accedere a Zip Manager Pro. Nota: per ulteriori informazioni su funzionamento e manutenzione del Nokia

Dettagli

Scheda operativa Versione rif. 13.01.3c00. Libro Inventari

Scheda operativa Versione rif. 13.01.3c00. Libro Inventari 1 Inventario... 2 Prepara tabelle Inventario... 2 Gestione Inventario... 3 Tabella esistente... 3 Nuova tabella... 4 Stampa Inventario... 8 Procedure collegate... 11 Anagrafiche Archivi ditta Progressivi

Dettagli

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente Pag. 1 di 15 VERS V01 REDAZIONE VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA A. Marchisio C. Pernumian 29/12/2014 M. Molino 27/02/2015 M. Molino

Dettagli

CONTROLLO DI GESTIONE DELLO STUDIO

CONTROLLO DI GESTIONE DELLO STUDIO CONTROLLO DI GESTIONE DELLO STUDIO Con il controllo di gestione dello studio il commercialista può meglio controllare le attività svolte dai propri collaboratori dello studio nei confronti dei clienti

Dettagli

Guida rapida all uso di Moodle per gli studenti

Guida rapida all uso di Moodle per gli studenti Guida rapida all uso di Moodle per gli studenti Introduzione La piattaforma utilizzata per le attività a distanza è Moodle, un software per la gestione di corsi on-line. Per chi accede come studente, essa

Dettagli

Manuale di Aggiornamento BOLLETTINO. Rel. 5.20.1H4. DATALOG Soluzioni Integrate a 32 Bit

Manuale di Aggiornamento BOLLETTINO. Rel. 5.20.1H4. DATALOG Soluzioni Integrate a 32 Bit Manuale di Aggiornamento BOLLETTINO Rel. 5.20.1H4 DATALOG Soluzioni Integrate a 32 Bit - 2 - Manuale di Aggiornamento Sommario 1 2 PER APPLICARE L AGGIORNAMENTO... 3 1.1 Aggiornamento Patch Storica...

Dettagli

Questo documento presenta la gestione del pannello di controllo del sistema "PTCPWEB" per le diverse utenze disponibili.

Questo documento presenta la gestione del pannello di controllo del sistema PTCPWEB per le diverse utenze disponibili. PTCPWEB MANUALE UTENTE 1 Questo documento presenta la gestione del pannello di controllo del sistema "PTCPWEB" per le diverse utenze disponibili. Release Notes... 3 Dicembre 2015... 3 1. Precondizioni...

Dettagli

Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore

Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore Manuale d uso per la raccolta: Sicurezza degli impianti di utenza a gas - Postcontatore 1. Obbligo di comunicazione dei dati... 2 2. Accesso alla raccolta... 2 3. Compilazione... 6 2.1 Dati generali Sicurezza

Dettagli

Selezionando la sezione Avviso Bonario, si apre la schermata seguente:

Selezionando la sezione Avviso Bonario, si apre la schermata seguente: AVVISO BONARIO Per lavorare gli avvisi bonari emessi dall Agenzia delle Entrate si seleziona nella barra principale dei menu: GESTIONE UFFICIO GESTIONE PRATICHE INSERIMENTO NUOVA PRATICA oppure si clicca

Dettagli

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web Corso di PHP 6.1 PHP e il web 1 1 Prerequisiti Conoscenza HTML Tecnica della programmazione Principi di programmazione web 2 1 Introduzione In questa Unità illustriamo alcuni strumenti di programmazione

Dettagli

Manuale Servizio NEWSLETTER

Manuale Servizio NEWSLETTER Manuale Servizio NEWSLETTER Manuale Utente Newsletter MMU-05 REDAZIONE Revisione Redatto da Funzione Data Approvato da Funzione Data 00 Silvia Governatori Analista funzionale 28/01/2011 Lorenzo Bonelli

Dettagli