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.
L'articolo può essere considerato un seguito di un altro tutorial già pubblicato, intitolato "Estrazione dati da un DB MySQL e visualizzazione in un movie Flash", nel quale ho descritto l'operazione inversa.
Requisiti:
Potete trovare Apache, il modulo PHP e il database MySQL nel pacchetto gratuito Easyphp.
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:
// codice associato al pulsante
on (release){
// creiamo i due oggetti loadVars
loader = new loadVars();
receiver = new loadVars();
// inseriamo le variabili nell'oggetto
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;
// funzione onload: si attiva al
// completmanento del caricamento dello script
receiver.onLoad = function (ok){
// elimina onLoad
delete this.onLoad;
// controlla che il caricamento abbia avuto
// successo
if(ok)
{
// controlla che l'inserimento abbia avuto
// successo
if(receiver.error == "1"){_root.output.text = "Errore inserimento dati";}
else{_root.play();}
}
// l'inserimento non ha avuto successo,
// viene segnalato l'errore
else
{
_root.output.text = "Errore inserimento dati";
}
};
// carichiamo lo script PHP
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 e , 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.
- Articolo precedente Estrazione dati da un DB MysSQL e visualizzazione in un movie Flash (Parte II)
- Articolo successivo Sistema di login con Flash e PHP (Parte I)
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!