Con questo articolo concluderemo la parte iniziale della mia personale piccola guida su come far comunicare Flash con MySql.
Innanzitutto vedremo come visualizzare i dati estrapolati (attraverso la query scritta nel tutorial.php ) in un semplice campo di testo in Flash, dopodichè realizzeremo un primo piccolo metodo per la gestione di tali dati: ossia come selezionare precisi dati attraverso un combobox (componente di Flash cs3).
Oramai il nostro lavoro si concentra solamente su Flash e Actionscript 3, poichè il database e il file PHP necessari sono stati già completamente realizzati, questi ultimi infatti permettono la comunicazione di tutti i dati inseriti nella colonna image della tabella product. Sarà compito di Flash intercettare ora questi dati e saperli gestire. Aprire quindi Flash CS3/4 e creare un file Flash in AS3.
Inserire nello stage il componente textarea , che troviamo come componente di user interface già preinstallato nella nostra versione del programma, e applicare ad esso un nome di istanza (noi mettermo “testo”), questo servirà per collegarlo al codice AS3 che andremo immediatamente a scrivere.
Selezionare il primo e unico fotogramma nella barra temporale, lì scriveremo il nostro codice actionscript:
//Innanzitutto dobbiamo aprire la connessione col file index.php , il quale
//ha il compito di collegare il framework ZEND col file tutorial.php e con Flash.
//Dobbiamo quindi creare una variabile nc della classe NetConnection,
//(questa classe serve proprio per connettere Flash a file residenti nel server)
//e la connettiamo all’indirizzo URL dove si trova il nostro file index.php
//(come vedete non viene invece effettuato nessun collegamento col
//file tutorial.php, semplicemente perchè tale collegamento viene già
//creato all’interno di index.php, precisamente nella riga che indica://require_once ‘Tutorial.php’; ).
var nc:NetConnection=new NetConnection();
nc.connect(”http://localhost/zendamf/index.php”);//La classe NetConnection richiede implementazione dell’oggetto
//Responder, il quale indica che funzioni avviare in caso di
//esito positivo (onResult) o negativo(onError) alla chiamata
//(call) avviata con la classe NetConnection.var res:Responder=new Responder(onResult,onError);
//effettuiamo una chiamata alla funzione tutorial.getTutorial presente nel file
//tutorial.php , indicando come Responder la variabile res precedentemente
//creata. In questo modo, Flash farà avviare la funzione getTutorial presente
//nel file PHP e, in caso di esito positivo dell’esecuzione (cioè se tutto scorre
//senza problemi), avvia la funzione onResult del Responder, altrimenti
//quella onError, che, come vedremo, semplicemente fà visualizzare, in
//Flash, un messaggio testuale con la scritta “ERRORE”.nc.call(”tutorial.getTutorial”,res);
//creiamo ora un array, il quale verrà riempito poi di tutti i dati estrapolati
//dalla colonna “IMAGE” del database, divisi per riga.var arrayElementi:Array=new Array();
//scriviamo la funzione onResult, che verrà avviata in caso di esito
//positivo alla chiamata call. Da notare l’indicazione di e come Object come
//valore passato alla funzione; questo Object costituirà, in parole povere,
//ogni riga-valore che viene trasmesso da MySql a Flash e ovviamente verrà
//utilizzato per passarlo come elemento dell’arrayElementi.
function onResult(e:Object):void
{trace (arrayElementi);
//realizziamo un cliclo for che mi vada a prendere ogni Object presente nella
//tabella (ossia ogni riga) e lo elabori.
for(var i:int=0;i < e.length;i++)
{//Aggiungiamo quindi ogni Object della colonna “IMAGE” all’arrayElementi
//(potevamo anche selezionare un altra colonna della tabella “product”, quale
//ad esempio “NAME”, in ogni caso avremmo creato una lista di tutti i valori
//inseriti in questa colonna).arrayElementi.push(e[i].IMAGE);
//infine aggiungiamo il valore testuale degli Object della colonna “IMAGE”
//alla textarea (che ha come come d’istanza proprio testo).
//Il comando appendText permette l’aggiunta di testo dopo quello
//precedentemente già scritto, in questo modo si creerà una lista.testo.appendText((i+1)+” - “+e[i].IMAGE+”\n”);
}}
//vediamo ora di sviluppare la funzione onError che si avvia nel caso in cui
//la chiamata del NetConnection abbia esito negativo.function onError(e:Object):void
{
trace(”ERRORE”);
}