Livio Giordano Personal Home Page Livio Giordano Personal Home Page
    

root
profile
articles
contacts
store



Inserimento dati in un db MySQL da Flash con PHP  Flash - Php - MySQL

Inserimento dati in un db MySQL da Flash con PHP

Interazione tra Flash e MySQL tramite PHP, per l'inserimento dei dati di un form.

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.

Il form

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 database MySQL

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 \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.

Livio Giordano

Trovi questo articolo anche su MMkit e WebMasterPoint:

http://www.mmkit.com/article.php?sid=410

http://www.webmasterpoint.org/appunti/flash/122.asp



Data di pubblicazione: Giovedì 16 Dicembre 2004

Stampa questo articoloStampa questo articolo

Scarica l'articolo in formato PDF (Zip file)Scarica l'articolo in formato PDF (Zip file)

Scarica il file ZIP allegato all'articoloScarica il file ZIP allegato all'articolo



last articles

 Inserimento dati in un db MySQL da Flash con PHP

 Estrazione dati da DB MySQL e visualizzazione in Flash

 Essential ActionScript 2.0


random links

Warp9 Community
flash, webdesign, graphix and... fun!

FlashMX2004.it
risorsa italiana dedicata a Flash MX 2004 ed ai suoi componenti

FlashMagazine
News, articles, tutorials & book reviews


friends box


  English version  |  Legal notes