Luca Vassalli's Website - Home page


Home
Indice

1.Introduzione

2.Centro Solidarietà di Genova

3.Politeama Genovese

 

3.4 Area privata

Anche per il Politeama Genovese è stata prevista, come per il Centro Solidarietà di Genova, un'area riservata destinata ai soli dipendenti del teatro che potranno compiere, tramite essa, una serie di azioni di manutenzione del sito senza dover ricorrere, per i problemi più semplici, all'aiuto dei tecnici della Wildcard.
Al termine del mio tirocinio le funzionalità implementate riguardavano la gestione degli spettacoli e delle notizie nella bacheca elettronica nella 'Home'.

3.4.1 Struttura generale

L'area riservata è tutta contenuta all'interno della cartella "locandine". All'interno si trovano replicati tutti i file di codice dell'intero sito in quanto nuove funzionalità, che dovessero essere aggiunte in futuro, dovranno poter essere raggiungibili direttamente da collegamenti visibili solo in questa copia del sito in cui dipendenti del teatro possono navigare liberamente. E'importante sottolineare che ciò che è duplicato è solo il codice che visualizza le pagine e non le immagini o i dati degli spettacoli: altrimenti modificare i file relativi ad uno spettacolo richiederebbe il doppio delle operazioni. Attualmente l'unico esempio disponibile è costituito dalla pagina che visualizza la scheda dello spettacolo selezionato che, nel caso del sito per i dipendenti, contiene un collegamento alla pagina di modifica degli spettacoli (fig.7).

Fig. 7 Scheda spettacolo con collegamento
Fig. 7 Scheda spettacolo con collegamento

Dal punto di vista della sicurezza, per evitare che un utente a conoscenza dell'esistenza di questa cartella, possa arrivare alle pagine con le funzionalità di modifica inserendone il percorso nella propria barra degli indirizzi, è stato necessario proteggere l'area riservata tramite una procedura di autenticazione analoga a quella descritta in relazione all'acquisto di biglietti online.
Dunque, una volta che si è selezionato con il mouse il collegamento "Modifica spettacolo", si accede alla pagina "login.PHP" la quale include i consueti menù volti a dare, anche alle pagine dell'area riservata, la medesima struttura di quelle dell'area pubblica; nella parte centrale dello schermo è invece incluso il file "login.inc" che contiene il codice necessario alla procedura di autenticazione. La prima volta che questa pagina è caricata il sistema crea una sessione che tiene traccia del nostro stato per permetterci, una volta autenticati, di navigare liberamente all'interno dell'area riservata fino alla chiusura della finestra del browser. Finchè non abbiamo inserito i dati correttamente ci appare il modulo per effettuare il 'login'.
I dati che inseriamo nel modulo sono confrontati con quelli contenuti all'interno della tabella "Login" del database. Questa tabella contiene anche nome e cognome dell'utente a cui le chiavi d'accesso si riferiscono, così da rendere veloce il recupero nel caso di dimenticanza, anche se la tabella dovesse aumentare di dimensioni. Una volta autenticati la variabile di sessione deputata ("key") contiene il valore 'autenticato' così che abbiamo accesso ad un menù che visualizza tutte le opzioni a nostra disposizione (fig.8). A questo stesso menu siamo indirizzati al termine delle operazioni di gestione degli spettacoli o delle notizie per poter scegliere nuove operazioni da compiere ma in quel caso la scritta "Login riuscito" non è mostrata nella parte alta della pagina.

Fig. 8 Menu dell'area riservata
Fig. 8 Menu dell'area riservata

Attualmente le voci presenti riguardano l'inserimento o la modifica di uno spettacolo e l'inserimento o la modifica di una notizia. Nel caso sia arrivato a questa pagina selezionando con il mouse il collegamento per la modifica di uno spettacolo allora, selezionando la voce "Per modificare o eliminare uno spettacolo clicca qui", è passato alla pagina per la modifica l'identificativo dello spettacolo.
Tutte le operazioni inerenti la gestione degli spettacoli sono implementate nel file "locandine.PHP" e "locandine.inc" che analizzeremo, per maggiore chiarezza espositiva, una alla volta. Si sono volute sviluppare tutte le funzionalità per la gestione degli spettacoli in un solo file per motivi di chiarezza ed ordine all'interno delle cartelle del sito, ma questo ha comportato una maggiore strutturazione del codice che è risultato complesso in fase di debug, data anche la dimensione dei file, soprattutto di "locandine.inc" che da solo è lungo circa 600 righe di codice. In questo file sono presenti più di una ventina di blocchi logici che devono distinguere le diverse situazioni in cui il file può essere interpretato dal server durante la fase di inserimento, modifica o cancellazione di uno spettacolo avente struttura di visualizzazione normale o speciale. Le operazioni inerenti alla gestione delle notizie sono invece gestite dai file "news.PHP" e "news.inc" in maniera simile, ma più semplice, a quella del Centro Solidarietà di Genova, come verrà analizzato in seguito.

3.4.2 Inserimento spettacoli

Quando si seleziona dal menù dell'area riservata la voce "Per inserire un nuovo spettacolo clicca qui" si accede al modulo di inserimento degli spettacoli. Dal momento che il codice di "locandine.PHP" e "locandine.inc" è utilizzato per eseguire le funzioni di inserimento, modifica o cancellazione degli spettacoli, i primissimi blocchi condizionali della pagina sono volti ad individuare la modalità in cui ci si trova. Le variabili analizzate a questo scopo sono: due campi del modulo di inserimento e modifica spettacoli ($id, $SAVEACK); una variabile di sessione ($norefresh), utilizzata principalmente per risolvere il problema degli aggiornamenti della pagina; una variabile passata in 'Get' ($mode). Per la modalità di inserimento, in particolare, si analizza il valore di "$mode": se esso non è settato oppure è settato a 'NULL' allora lo si imposta a "new" e quindi si analizza il valore di "$SAVEACK": se questo ha un valore diverso da "inserisci" vuol dire che il modulo non è stato ancora inviato e quindi va visualizzato. "$SAVEACK" è una variabile che assume il valore di un campo nascosto del modulo presentato; in HTML è infatti possibile inviare insieme ai campi del modulo compilati dall'utente, anche dei campi 'nascosti' in cui il valore è definito dal programmatore grazie a blocchi condizionali, scritti in Javascript o PHP che, come in questo caso, servono a passare delle informazioni necessarie in fase di elaborazione dei dati.
Una volta che il programma ha individuato che il modulo va visualizzato per l'inserimento di un nuovo spettacolo si inizializzano tutte le variabili che ne conterranno i dati. Innanzi tutto si chiama una funzione (idsearch) volta ad individuare il corretto 'IdSpettacolo'. In essa si fa una chiamata al database e si verifica se nella numerazione crescente degli identificativi degli spettacoli, a causa di una cancellazione, ci sia qualche valore libero: in caso affermativo si riempe questo 'buco' restituendo il valore, in caso contrario si restituisce l'identificativo presente in tabella di valore più grande, incrementato di uno. Dopo aver assegnato il corretto valore all'identificativo dello spettacolo di cui si vuole effettuare l'inserimento, si pongono tutti gli altri campi del modulo a valori che una volta visualizzati aiutino l'utente nella procedura di registrazione, come la variabile "$testo" al valore "Digitare o incollare il testo della recensione". Quindi si pone la data di inizio e fine della programmazione alla data corrente e si inizializza la variabile "modalità" al valore "Inserimento nuovo spettacolo"; infine si inizializza la variabile "$SAVEACK" al valore 'modulo'.
Il modulo per l'inserimento è diviso in quattro parti: "Dati dello spettacolo" che contiene i campi con i dati che andranno memorizzati nel database; "Dettagli dello spettacolo" che contiene i percorsi da cui vengono caricati i file di tipo flash e il testo di quello che sarà il file HTML presente nella cartella dello spettacolo e mostrato nella scheda dello spettacolo; "Controlli" che presenta i pulsanti per l'invio del modulo, per riportare le informazioni già inserite al valore di default, e, nel caso della modalità di modifica dei dati, anche il pulsante per l'eliminazione dello spettacolo; "Info Operazione" che presenta la notifica dell'identificativo dello spettacolo che si sta registrando e della modalità dell'operazione (questi ultimi sono campi di sola visualizzazione). Subito dopo i vari blocchi condizionali che esaminando il codice stabiliscono la modalità dell'operazione, se ne trova uno che effettua un controllo sulla variabile "$SAVEACK" e, trovandola al valore "modulo", visualizza il modulo per l'inserimento dei dati dello spettacolo (fig.9).

Fig. 9 Inserimento spettacoli
Fig. 9 Inserimento spettacoli

La strutturazione tramite tabelle HTML della parte di pagina contenente il modulo è stata piuttosto laboriosa. Esso è situato all'interno di una tabella con una sola riga divisa in due celle al cui interno si trovano a loro volta due sottotabelle. La sottotabella della prima cella è quella contente la parte di "Dati dello spettacolo", è a sua volta divisa in dodici righe di 6 celle ciascuna, nelle righe in cui c'è stato bisogno di utilizzare tutte e sei le celle disponibili si è utilizzato l'attributo, HTML, "colspan" del tag "td" che serve per comunicare al browser quante celle si devono fondere in una sola. La sottotabella della seconda cella ha invece dieci righe ognuna costituita da due celle. Interessante è stata l'implementazione dei campi inerenti alla data di programmazione dello spettacolo: oltre alla possibilità di andare a scrivere all'interno del corrispondente campo direttamente il corretto valore di giorno o mese, l'utente può scegliere di utilizzare le frecce alla destra del campo d'interesse per far scorrere i valori visualizzati al suo interno fino a quelli desiderati. Per il campo relativo all'anno è invece stato adottato un menù a tendina.
Queste soluzioni permettono di controllare maggiormente i valori inseriti dall'utente: per esempio scorrendo il numero del mese, una volta arrivati a "12", dopo un'ulteriore selezione della freccia rivolta verso l'alto, non si corre il rischio che l'utente, per errore, indichi che lo spettacolo finisca nel tredicesimo mese dell'anno ma automaticamente il valore ricomincia il ciclo di valori consentiti, passando ad "1". Per quanto riguarda il codice, questa soluzione è stata interamente realizzata in Javascript e HTML. E' stato utilizzato il tag HTML "map" relativo all'area di codice contenente i tag ("img") richiamanti le immagini di tipo 'Gif'. Inoltre all'interno dei tag "img" si sono date le coordinate dell'area sensibile al passaggio del mouse in modo che quando l'utente porta il cursore sopra le freccie l'icona di queste cambi aspetto colorandosi di azzurrino, ad indicare la possibilità di interazione. Infine, sempre all'interno del tag "img", si trova un attributo ("onclick") che quando si seleziona con il mouse una delle due freccie richiama la funzione Javascript "incremento". A questa funzione saranno passati due parametri: il nome del campo da modificare e se questi vada incrementato, nel caso in cui la freccia fosse rivolta verso l'alto, o vada decrementato, nel caso la freccia fosse rivolta verso il basso. La funzione Javascript che gestisce queste funzioni si trova nel file "politeama.js" ed è richiamata, non con la consueta funzione PHP "include" ma tramite il tag "script" e l'attributo "src", direttamente in "locandine.inc". Sempre in questo file si trova anche la funzione "rollover" che serve per cambiare l'immagine della freccia quando vi si sposta sopra il cursore.
Per quanto riguarda i campi necessari a caricare i file flash, gli utenti possono, tramite il bottone "Sfoglia", selezionare direttamente dal proprio calcolatore il percorso dei file che vogliono caricare. Il campo di testo in cui si può inserire la trama dello spettacolo è analogo a quello analizzato per la modifica dei testi del Centro Solidarietà di Genova: si presuppone infatti che gli addetti all'amministrazione del sito possano intervenire sulla struttura con cui è visualizzata questa locandina nella scheda degli spettacoli, inserendo frasi colorate od in grassetto.
Una volta che sono stati compilati tutti i campi del modulo e si seleziona il pulsante "Invia" il campo nascosto "$SAVEACK" è impostato al valore "inserisci" e il modulo è inviato. Viene caricata nuovamente "locandine.PHP" ma questa volta avremo in 'Post' tutti i valori delle variabili dei campi e in 'Get' 'mode=new' e 'id=$id' dove "$id" varrà il valore dell'identificativo dello spettacolo generato dall'apposita funzione. Questa volta si entrerà in un altro blocco condizionale che svolge le seguenti funzioni: registrare nel database tutte le variabili; caricare i file flash; genererare il file HTML con il testo fornito dall'utente; modificare il valore della variabile di sessione "$norefresh" a "1", valore che indica che uno spettacolo con campo "Speciale" della tabella "Spettacoli" a '0' è stato inserito con successo; visualizzare un messaggio di corretta registrazione dello spettacolo.
L'inserimento dei dati nel database è effettuato tramite un semplice comando di "Insert" passato a MySql tramite la funzione PHP "mysql_query".
Per il caricamento dei file flash si esegue la seguente procedura: si crea la cartella che conterrà tutti i file associati allo spettacolo, si verifica per ogni file flash se sia stato realmente caricato per evitare che in caso contrario siano presentati a video messaggi d'errore, si spostano i file dalla cartella temporanea in cui il server li salva dopo l'upload a quella appena creata. Il controllo volto a verificare che i file siano stati caricati è necessario in quanto lo spettacolo potrebbe avere l'attributo "speciale=1" e in questo caso ha solo un file flash di dimensioni grandi e e uno di dimensioni piccole ma non quello di dimensioni medie che quindi non sarà caricato dagli utenti. E' da notare che nello spostamento i file flash vengono rinominati in quanto per le operazioni di visualizzazione abbiamo precedentemente notato che il nome dei file flash richiamati dagli script deve essere sempre "grande.swf", "media.swf" e "piccola.swf" e quindi, per evitare che un utente si dimentichi di nominare correttamente il file, lo si fa automaticamente.
Il passo successivo è quello di verificare quanto valga il valore dell'attributo "speciale", corrispondente al campo "Layout" inviato tramite il modulo. Nel caso "speciale=0" devo andare a scrivere il contenuto della "textarea", sottostante i bottoni per inserire i flash (fig.9), all'interno di un nuovo file HTML, chiamarlo "scheda.HTML", salvarlo nella cartella dello spettacolo e, se in nessuna delle operazioni finora effettuate si è verificato un errore, porre "$norefresh=1" e visualizzare un messaggio di avvenuto inserimento dei dati nel database. Nel caso "speciale=1" non vi è nessun file HTML da scrivere ma si deve far caricare all'utente l'immagine JPG che va visualizzata nella scheda dello spettacolo al posto del file flash. Viene dunque visualizzato un modulo tramite il quale l'utente può caricare l'immagine. Inviando questo ulteriore modulo è caricata nuovamente la pagina "locandine.php" nella quale sono passati in 'Get' "mode=special" e "id=IdSpettacolo". Per evitare confusione, al di sotto del modulo è mostrata l'avvertenza che il file caricato deve essere un JPG e non un flash in quanto essi vengono visualizzati tramite tag diversi nella scheda dello spettacolo e sbagliare avrebbe sicuri effetti negativi. Per l'immagine JPG è ripetuta la procedura appena analizzata per il caricamento dei file flash. Se non si verificano errori si visualizza il messaggio "Tutti i dati sono stati memorizzati con successo! Per tornare al menu principale clicca qui." e si pone "$norefresh=special", così da risolvere i problemi in caso di aggiornamento della pagina anche in questo caso.
Durante tutte le operazioni compiute si possono presentare situazioni inaspettate che danno luogo ai seguenti messaggi: "Errore nell'upload del file piccola.swf"; "Errore nell'upload del file media.swf"; "Errore nell'upload del file grande.swf"; "Non si riesce ad aprire il file nomefile" nel caso non vada a buon fine l'operazione di apertura del file HTML in cui si scrive la locandina dello spettacolo; "Non si riesce a scrivere nel file nomefile"; "Non si riesce a spostare l'immagine JPG". Nel caso si verificasse uno di questi errori l'utente potrà indicare ai tecnici della Wildcard il messaggio visualizzato così da individuare rapidamente la parte di codice interessata.

3.4.3 Modifica spettacoli

Quando si seleziona dal menù dell'area riservata la voce "Per modificare o eliminare uno spettacolo clicca qui" si accede ad una schermata dalla quale si può digitare l'identificativo dello spettacolo che si vuole modificare.
Alla funzione di modifica in realtà si può accedere direttamente dal collegamento sottostante la scheda dello spettacolo nell'area riservata, però si è voluta dare la possibilità di accedervi anche in questo modo. La pagina che visualizza il modulo in cui inserire l'identificativo dello spettacolo è sempre "locandine.PHP" che nel caso verifichi che in 'Get' "mode=modifica" ma non è passato alcun identificativo visualizza questo piccolo modulo per la sua selezione. Nel caso venga scelto un identificativo a cui non è associato nel database nessuno spettacolo viene visualizzato un modulo vuoto, la modalità passa da "modifica spettacolo" a "inserimento spettacolo" e valgono le procedure analizzate nel precedente paragrafo; facendo in questo modo gli utenti hanno la possibilità di inserire nuovi spettacoli scegliendo loro l'identificativo che lo spettacolo deve avere. Nel caso invece sia stato scelto un valore di identificativo di uno spettacolo esistente se ne visualizzano i dati all'interno dello stesso modulo già visto nel caso dell'inserimento, che però questa volta avrà anche il bottone necessario all'eliminazione.
Per inizializzare i campi del modulo ai valori corretti si effettua un'interrogazione al database sulla base dell'identificativo dello spettacolo, si trascrivono i valori degli attributi della tupla restituita in un gruppo di variabili ognuna delle quali è mostrata tramite la funzione PHP "echo" all'interno dei campi del modulo. Per copiare i valori del risultato dell'interrogazione all'interno delle variabili che verranno poi mostrate all'interno dei campi del modulo è stata utilizzata la funzione PHP "list" che prende i valori delle locazioni di memoria di un vettore e li mette all'interno dei parametri che riceve, nell'ordine in cui questi parametri sono dichiarati. Quindi "list($par1,$par2)= $vettore" copia la prima locazione di memoria del vettore ($vettore[0]) sarà copiata all'interno del primo parametro ($par1) e la seconda locazione ($vettore[1]) all'interno del secondo parametro($par2). Questo è molto utile perché permette di mantenere un codice compatto e facilmente leggibile. Inizializzare la data di inizio e di fine della programmazione è leggermente più complesso perché nel database essa è registrata in un'unica stringa, con il formato "Anni-mm-gg", mentre nel modulo sono presentati separati i campi relativi a giorni, mesi e anni. Quindi si utilizza la funzione PHP "explode" che accetta come primo parametro il carattere da utilizzare come divisore tra le sottovariabili (-) e come secondo parametro la variabile da dividere. Viene così generato un array contenente i tre numeri d'interesse distinti che possono essere usati per inizializzare le variabili visualizzate nel modulo. Poi si pone la variabile "$modalità" a "Modifica spettacolo" così che nella parte di 'Info Operazione' del modulo venga visualizzata la corretta modalità. Infine, nel caso lo spettacolo abbia l'attributo "speciale=0", viene aperto il file "scheda.HTML" e copiato all'interno di una variabile ($testo).
Ovviamente nel caso degli spettacoli con "speciale=1" la 'textarea' sottostante i bottoni per l'upload dei file flash rimarrà vuota.
Una volta che il modulo è visualizzato l'utente ha la facoltà di modificarlo a proprio piacimento: le modalità per la registrazione delle modifiche nel database sono analoghe a quelle per l'inserimento. Una situazione particolare si verifica quando si cambia il valore dell'attributo "speciale" in quanto non è sufficiente modificare i dati tramite un'interrogazione di "Update" e caricare gli opportuni file come analizzato in precedenza, ma bisogna anche eliminare i file non più necessari: in un caso il flash di medie dimensioni e la scheda in HTML, nell'altro l'immagine in formato JPG. Nel caso venga fatto l'upload di un file di un tipo già presente nella cartella, per esempio un file flash piccolo quando nella cartella c'è già il file "piccola.swf", poiché esiste il meccanismo di ridenominazione automatica dei file, il nuovo file sovrascriverà il vecchio anche se il file di cui si effettua l'upload ha un altro nome. Si è scelto di non chiedere conferme prima della sovrascrittura perché è improbabile che si carichi un nuovo file, diverso dal precedente, senza voler cancellare la vecchia versione. Infatti questa o non ci si ricorda più che esista, e ciò è difficile dal momento che bastano un paio di pagine del sito per verificarne l'esistenza, oppure la si vuole sostituire, e quindi il file vecchio diventa inutile.
Una volta che sono stati modificati i dati registrati nel database con i nuovi presi dal modulo e sono stati spostati nella cartella dello spettacolo i nuovi file caricati dall'utente, quando presenti, se non si è verificato alcun errore viene visualizzato il messaggio "I dati sono stati modificati con successo.Per tornare al menu principale clicca qui.".

3.4.4 Eliminazione spettacoli

Per accedere alla funzione di eliminazione spettacoli si segue lo stesso percorso già visto per la modifica: si sceglie dal menù dell'area riservata la voce "Per modificare o eliminare uno spettacolo clicca qui" e poi, eventualmente, si seleziona l'identificativo dello spettacolo dalla schermata successiva. Quando viene visualizzato il modulo con al proprio interno i dati dello spettacolo che si vuole cancellare, è sufficiente selezionare il bottone "Elimina" per poterlo cancellare. Per evitare cancellazioni accidentali prima della definitiva cancellazione dello spettacolo viene chiesta conferma, tramite una finestra (fig.32). Questa conferma è richiesta perché l'eliminazione di uno spettacolo in questo modo si riflette istantaneamente sulla parte pubblica del sito che non conterrà più alcuna traccia dello spettacolo necessitando, qualora lo si volesse ripristinare, il ricorso al backup del database. Anche in questo caso, tutte le operazioni descritte sono implementate all'interno del file "locandine.inc".
Selezionando con il mouse il bottone "Elimina" viene richiamata una funzione ("cambiaSAVEACK") che tramite un apposito metodo Javascript ("confirm") visualizza il messaggio in cui si chiede la conferma di cancellazione dello spettacolo. In caso si selezioni il pulsante "Annulla" non viene fatto niente, altrimenti "cambiaSAVEACK" invia il modulo "eliminaform". Questo non è il modulo con i dati dello spettacolo ma un altro modulo composto da un solo campo di nome "id", non visibile all'utente in quanto di tipo 'hidden'. Il modulo, avendo "locandine.php?mode=eliminaS" come valore dell'attributo "action" del tag "form", serve per ricaricare la stessa pagina ("locandine.PHP") con la variabile "mode" al valore corretto e per passare la variabile "$id" in 'Post' come valore del campo 'hidden'. Infatti le ultime versioni di PHP permettono di accedere alle variabili passate in 'Get' e 'Post' in due modi: tramite il vettore che ha per nome il metodo con cui è passata la variabile e per posizione il nome della variabile stessa (p.e. $GET['id']); oppure, come usato in "locandine.PHP", tramite variabili che hanno il nome del campo passato in 'Post' o del parametro in 'Get' (p.e. se ho "locandine.php?mode=eliminaS" nella pagina caricata potrò usare la variabile "$mode" che varrà "eliminaS"). Questo è importante perché così nel codice di "locandine.PHP" ho potuto far riferimento sempre alla variabile "$id", senza conoscere effettivamente come questa fosse passata da una pagina all'altra. Per questa ragione, nel caso in esame, quando la pagina è ricaricata l'aver passato il valore dell'identificativo dello spettacolo in 'Post', mentre normalmente era passato in 'Get', non crea alcun problema.
La variabile "SAVEACK" non è posta a "modulo" (infatti il modulo non è visualizzato) e si entra invece, facendo un controllo sul valore di "mode", in un blocco logico in cui grazie alla variabile "$id" si conosce la chiave della tupla da eliminare, tramite un "Delete", dal database e il percorso della cartella dello spettacolo. Per eliminare la cartella PHP non mette a disposizione nessuna funzione specifica nel caso in cui, all'interno di una cartella, vi siano sottocartelle. Nel nostro caso difatti dentro a "spett_idSpettacolo" ci sono: i file flash o l'immagine JPG, eventualmente la scheda in HTML e una cartella "file" contenente i file multimediali associati allo spettacolo. Fortunatamente sono riuscito a trovare in Internet una funzione PHP ("rmdirr") che riceve per parametro una cartella e la cancella insieme a tutte le sottocartelle in essa contenute. Nel caso sia questa funzione che la cancellazione dal database si concludano senza errori, è visualizzato un messaggio di conferma di avvenuta cancellazione.

3.4.5 Gestione notizie

La gestione delle notizie per il Politeama Genovese avviene in maniera simile, ma semplificata, rispetto a quanto descritto per il Centro Solidarietà di Genova. Per svolgere queste funzionalità ho utilizzato parte del codice già scritto per la gestione degli spettacoli del Politeama e per la gestione delle notizie per il Csg. Come già visto per molte altre pagine del sito, l'insieme dei file contenenti i vari menù, i fogli di stile e il codice per la connessione al database, è contenuto all'interno della pagina "news.PHP" che viene richiamata sia che selezioniamo la voce "Per inserire una news clicca qui" o che selezioniamo la voce "Per modificare o eliminare una news clicca qui" del menù dell'area riservata. Invece il codice riguardante esclusivamente la gestione delle news, si trova all'interno del file "news.inc".
Per quanto riguarda l'inserimento di una nuova notizia, quando si seleziona la voce corrispondente del menù dell'area riservata appare un modulo con caratteristiche simile a quello per l'inserimento degli spettacoli, ma con i soli campi necessari a definire una nuova notizia. Anche in questo caso la 'textarea' che conterrà il testo è editabile, tramite l'editor già analizzato, in quanto è possibile che le notizie della bacheca elettronica contengano dei collegamenti con altre pagine per approfondimenti sulle tematiche toccate. La differenza sostanziale con il sito del Centro di Solidarietà di Genova è che in quel caso tutto il testo della notizia nella bacheca della 'Home' era un collegamento ad una pagina che l'utente stesso poteva caricare, mentre adesso anche una sola parola del testo può essere un collegamento per un'altra pagina che gli utenti stessi, che hanno accesso alle cartelle del sito, possono spostare in un'apposita cartelle.
Tra le motivazioni di questa scelta va evidenziata la maggiore competenza tecnica, reale o presunta, degli amministratori del sito del Politeama rispetto a quelli del Csg, e la richiesta della massima flessibilità possibile da parte dei responsabili del teatro. Infatti, nel caso del Politeama è possibile anche avere nella stessa notizia più collegamenti a pagine diverse, cosa impossibile nel caso del Csg. Il modulo è diviso in tre campi: "Dati della news" contenente i campi titolo, data, stato e testo che sono inseriti nei corrispondenti attributi del database; "Controlli" che nel caso dell'inserimento della notizia contiene i bottoni necessari al reset dei campi del modulo ai dati di default; "Info operazione" che contiene le informazioni sulla modalità di operazione che si sta effettuando e sull'identificativo della nuova notizia. Anche in questo caso l'identificativo della notizia è un numero crescente generato da un'apposita funzione ("id_searchnews") che, nel caso di identificativi lasciati liberi da notizie cancellate, colma i vuoti restituendone i valori, altrimenti restituisce l'ultimo identificativo trovato, incrementato di uno.
L'inserimento è effettuato tramite l'apposita interrogazione Sql già analizzata più volte. Nel caso non si verifichino problemi nella connessione al database, si visualizza a schermo: "I dati sono stati registrati con successo. Per tornare al menu principale clicca qui.". A differenza di quanto fatto per il Centro di Solidarietà di Genova non si effettua alcun controllo sul fatto che l'utente abbia o meno inserito un titolo o una data validi in quanto in questo caso la chiave della tabella è l'identificativo, attributo che l'utente non può in alcun modo modificare, dunque un errore su questi due campi non sarebbe particolarmente grave. Per quanto riguarda la data essa è gestita tramite i controlli Javascript precedentemente analizzati ed è dunque estremamente improbabile che sia in un formato errato.
La procedura di modifica mette in evidenza come l'identificativo delle notizie, rispetto a quello degli spettacoli, sia "trasparente" per gli utenti dell'amministrazione che non sono affatto tenuti a ricordarne i valori. Per scegliere la notizie da modificare non viene proposto nessun modulo in cui riempire il campo "Id" ma si visualizzano tutte le notizie attualmente memorizzate nel database e si lascia che l'utente selezioni direttamente quella desiderata. L'identificativo verrà usato dal sistema in quanto sarà passato in 'Get' dalla pagina di visualizzazione (fig.10) a quella con il modulo per la modifica, inizializzato ai valori correnti della notizia, ma tutto avverrà all'oscuro degli utenti.

Fig. 10 Selezione notizia da modificare
Fig. 10 Selezione notizia da modificare

La schermata di visualizzazione delle notizie attualmente memorizzate ha funzionamento analogo a quella discussa riguardo all'area riservata del Csg: selezionando con il mouse una qualunque delle quattro componenti (titolo, data, testo, stato) della notizia si accede alla pagina con i dati della notizia scelta già all'interno dei campi del modulo per la modifica.
Rispetto a quanto analizzato per il Csg, l'utilizzo dell'identificativo della notizia come chiave del database elimina anche tutti i problemi analizzati relativamente alla presenza di apici all'interno del titolo di una notizia. Infatti il confronto tra le tuple del database e quella che si vuole modificare viene fatto su di un campo, l'identificativo per l'appunto, che non conterrà mai apici in quanto è un intero generato in automatico.
Il modulo per la modifica non differisce affatto da quello per l'inserimento eccezion fatta per il bottone "Elimina", non presente nel modulo precedente, che serve proprio per l'eliminazione della notizia.
Nel caso si voglia solo modificare la notizia si procede alla registrazione dei cambiamenti effettuati tramite la consueta interrogazione al database e quindi si visualizza il messaggio di conferma del buon esito delle operazioni "I dati sono stati modificati con successo. Per tornare al menu principale clicca qui".
Nel caso in cui si desideri cancellare la notizia visualizzata, è sufficiente selezionare il bottone "Elimina" affinché, prima venga chiesta conferma, e, in caso affermativo, venga cancellata la notizia dal database. Come nel caso dell'eliminazione spettacoli, quando si seleziona il bottone "Elimina" viene richiamata una funzione ("cambiaSAVEACKnews") che in caso di conferma della cancellazione invia un modulo con un unico campo 'hidden' che passa alla pagina caricata ("news.php?mode=eliminaS"), in 'Post', l'identificativo della notizia da cancellare. Nel caso non si verifichino errori nella cancellazione della tupla e nella connessione al database, verrà visualizzato un messaggio di corretta cancellazione della notizia.