Estrazione dati da un DB MysSQL e
visualizzazione in un movie Flash -
In questo articolo vedremo come estrarre dei dati da un
database MySQL con PHP e visualizzarli in un movie Flash.
Requisiti:
- Flash MX o superiore;
- Server (consigliato Apache);
- Modulo PHP;
- Database MySQL;
Potete trovare Apache, il modulo PHP e il database MySQL nel pacchetto gratuito
di Easyphp (www.easyphp.org).
Prenderemo in considerazione l'esempio di un database di una generica agenzia,
che contiene una tabella chiamata "agenti", nella quale è memorizzato l'elenco
di tutti i dipendenti dell'agenzia (id - primary key, nome, cognome e data di
nascita). Andremo a prelevare i record di questa tabella e li mostreremo dentro
alcuni campi di testo dinamici di un movie Flash. Sarà semplice in seguito
adattare questo esempio ai propri scopi.
Il database
All'interno del file zip troverete il dump del database utilizzato per
l'esempio. La tabella sarà come quella rappresentata nell'immagine sotto:
Il codice PHP
Il codice PHP utilizzato serve per estrarre i dati dal database con una query, e
mandarli in output in formato url-encoded, per poter successivamente essere
letti da ActionScript.
Ecco il codice PHP:
<?php
// dati per la connessione al database
$db_host = "localhost";
$db_user = "";
$db_password = "";
$db_name = "agenzia";
// connessione al database
$db = mysql_connect ($db_host, $db_user, $db_password);
$db_forum = mysql_select_db ($db_name, $db);
$query = "SELECT `nome`, `cognome`, `datanascita` FROM `agenti` ORDER BY
`cognome`";
$query_results = mysql_query($query);
$i = 0;
while($fetch = mysql_fetch_array($query_results))
{
$i++;
echo "&nome".$i."=".$fetch['nome']."<br>";
echo "&cognome".$i."=".$fetch['cognome']."<br>";
echo "&datanascita".$i."=".$fetch['datanascita']."<br>";
}
if($i)
{
echo "&i=".$i;
echo "&ok=1";
echo "&stop=1";
}
else
{
echo "&ok=0";
echo "&stop=1";
}
?>
Ricordate di inserire i dati per la connessione al database (host, nome utente,
password e nome del database). Il codice PHP si collega al database, estrae i
record, e li manda in output in formato url-encoded. Le variabili "ok"
e "i" ci serviranno rispettivamente per controllare
che la query abbia restituito almeno un record, ed per conoscere il numero
esatto dei record restituiti.
Il codice ActionScript ed il movie Flash
Il codice ActionScript, associato ad un pulsante, si occuperà di eseguire lo
script PHP, prelevarne i dati, e mostrarli nel movie.
Ecco il codice ActionScript:
on(release)
{
loader = new loadVars();
loader.load("script.php");
loader.onLoad = function(success) {
if(success)
{
if(this.ok)
{
_root.nome.htmlText = "";
_root.cognome.htmlText = "";
_root.datanascita.htmlText = "";
for(var j = 1; j <= this.i; j++)
{
_root.nome.htmlText += eval("this.nome" + j);
_root.cognome.htmlText += eval("this.cognome" + j);
_root.datanascita.htmlText += eval("this.datanascita" + j);
}
_root.output.text = "ok";
}
else
{
_root.nome.htmlText = "";
_root.cognome.htmlText = "";
_root.datanascita.htmlText = "";
_root.output.text = "error";
}
}
}
}
Un messaggio di conferma o di errore segnalerà l'esito dell'operazione di
estrazione e visualizzazione dei dati.
Inserimento dati in un db MySQL da Flash con PHP
-
Inserimento dati in un db MySQL da Flash con PHP
In questo articolo vedremo come inserire dei dati in un database MySQL direttamente da un movie Flash, utilizzando PHP come linguaggio di raccordo tra il filmato e la base di dati.
Requisiti:
Princìpi generali di funzionamento
Anche in questo caso prenderemo in considerazione un
esempio generico, che potrà poi essere facilmente
adattato a qualsiasi esigenza.
Lo spunto ci viene offerto da un form per l'inserimento
di alcuni dati personali da memorizzare in un database.
Ci serviremo di ActionScript per catturare i dati
inseriti dall'utente e, attraverso un oggetto loadVars,
inviarli ad un apposito script PHP, che avrà il compito
di inserire i dati nel db e restituire una risposta
contenente l'esito dell'operazione.
Il database
Ci serviremo di un db che chiameremo "dbtest",
all'interno del quale creeremo una tabella con nome "utenti",
sulla quale andremo poi ad effettuare gli inserimenti.
All'interno del file ZIP allegato all'articolo troverete
il dump del database utilizzato per l'esempio.
La tabella sarà la stessa di quella rappresentata
nell'immagine sotto:
Il codice ActionScript
Per inviare i dati del form allo script PHP ci serviremo dei metodi della classe
loadVars. Tale oggetto ci servirà anche per ricevere l'esito dell'operazione.
Ecco il codice AS associato al pulsante di invio dati:
on (release)
{
loader = new loadVars();
receiver = new loadVars();
loader.nome = _level0.nome;
loader.cognome = _level0.cognome;
loader.indirizzo = _level0.indirizzo;
loader.cap = _level0.cap;
loader.citta = _level0.citta;
loader.telefono = _level0.telefono;
loader.email = _level0.email;
receiver.onLoad = function (ok)
{
delete this.onLoad;
if(ok)
{
if(receiver.error == "1"){_root.output.text = "Errore inserimento dati";}
else{_root.play();}
}
else
{
_root.output.text = "Errore inserimento dati";
}
};
loader.sendAndLoad("script.php", receiver, "POST");
}
Abbiamo creato due oggetti loadVars, uno per
inviare i dati, ed un altro per ricevere la risposta. E' anche possibile
utilizzare un unico oggetto per entrambe le operazioni, ma un oggetto apposito
per la ricezione ci permetterà di evitare possibili errori dovuti a variabili
che hanno lo stesso nome.
Definiamo quindi una funzione per l'evento onLoad,
che verrà attivata quando il caricamento dello script PHP sarà utlimato. Il
codice di questa funzione (che verrà poi cancellata con
delete) si occuperà di controllare che il caricamento dello script abbia
avuto successo, e che i dati siano stati inseriti correttamente nel database.
Tali controlli vengono effettuati sulla base delle risposte stampate dal codice
PHP.
Per caricare il codice non ci resta quindi che utilizzare il metodo
sendAndLoad, che invia tutte le variabili presenti
nella classe loader tramite POST, e inserisce la
risposta nell'oggetto receiver appositamente creato.
Per farsi un'idea del contenuto effettivo dei due oggetti, è possibile
effettuare un trace sul metodo
toString() di ciascun oggetto.
Nel caso in cui tutte le operazioni siano andate a buon fine, il filmato si
sposterà sul frame 2 e verrà visualizzato un messaggio di conferma; se invece si
fosse verificato qualche errore, comparirà un avvertimento in rosso sul form.
Il codice PHP
Il codice necessario ad inserire i dati nel db è molto semplice. Diamo prima uno
sguardo per poi vedere cosa effettivamente avviene:
<?php
// dati per la connessione al database
$db_host = "localhost";
$db_user = "";
$db_password = "";
$db_name = "dbtest";
// connessione al database
$db = mysql_connect ($db_host, $db_user, $db_password);
$db_forum = mysql_select_db ($db_name, $db);
// query di inserimento
$query = "INSERT INTO `utenti` (nome, cognome, indirizzo, cap, citta, telefono,
email, data)
VALUES ('".$_POST['nome']."', '".$_POST['cognome']."',
'".$_POST['indirizzo']."', '".$_POST['cap']."', '".$_POST['citta']."',
'".$_POST['telefono']."', '".$_POST['email']."', '".date('Y-m-d H:i:s')."')";
// esecuzione della query
$query_results = mysql_query($query) or die("&error=1");
echo "&stop=1";
?>
La prima parte comprende le istruzioni per stabilire la connessione al database
(che deve essere già stato creato in precedenza). E' importante quindi inserire
i dati per la connessione (host, nome utente, password e nome del db).
Il passo successivo consisterà nel formattare la query con i dati dell'array
POST che sono stati inviati da
sendAndLoad, ed eseguirla. Nel caso l'inserimento non fosse andato a buon
fine, verrà stampato (nel formato url-encoded) il valore
&error=1, che sarà quindi inviato come risposta al movie. L'ultima
istruzione, che stampa &stop=1 (sempre in formato
url-encoded), ha un duplice scopo: serve come 'terminatore' per la variabile
precedente, per evitare il concatenamento con caratteri come n e r, ed inoltre
funge da unico argomento di ritorno nel caso l'inserimento fosse andato a buon
fine; infatti il controllo in AS per accertare l'esito dell'operazione prevede
che venga ritornata almeno una variabile.