Spesso capita che stiamo sviluppando un sito web con Adobe Flash per un cliente e/o amico e ci viene richiesto di immagazzinare i dati degli utenti tramite una form.
Come fare ?
Questo tutorial cercherà di spiegare ai meno esperti come inserire dei dati in un DataBase ( mySQL ) da Flash.
Per prima cosa bisogna ribadire il concetto che Flash e mySQL non possono comunicare direttamente.
Serve un script lato server ( in questo caso PHP ) che riceva i dati da Flash e li inserisca poi nel DataBase.
Ho creato un esempio utilizzando una form in Flash che invia dei dati ad uno script PHP ( nome, cognome, indirizzo, città, stato, email ) che a sua volta li immagazzinerà nel DataBase.
Prima di tutto bisogna creare una nuova tabella nel nostro DB:
In questo caso una tabella che chiameremo "clients" con 7 colonne ( ID, nome, cognome, indirizzo, città, stato, email ).
Il file .sql per creare la tabella necessaria è il seguente:
PHP Code:
CREATE TABLE `clients` (
`ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` TEXT NOT NULL ,
`surname` TEXT NOT NULL ,
`address` TEXT NOT NULL ,
`city` TEXT NOT NULL ,
`state` TEXT NOT NULL ,
`email` TEXT NOT NULL
) ENGINE = MYISAM ;
Creo una form in Flash nel seguente modo:
- sei campi di testo statici che conterranno i titoli ( nome, cognome, indirizzo, città, stato, email )
- sei campi di testo input nei quali l' utente inserirà le proprie informazioni
- un campo di testo dinamico che servirà a visualizzare eventuali messaggi per l' utente ( ad esempio se non ha compilato tutti i campi )
- un bottone per l' invio dei dati
Eccola:
Nella Document Class Main.as abbiamo il seguente codice:
Code:
/*
*************************************
* Data Store Flash CS3 + PHP
* http://www.FlepStudio.org
* Author: Filippo Lughi
* version 1.0
*************************************
*/
package org.FlepStudio
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
import flash.net.*;
import caurina.transitions.Tweener;
public class Main extends MovieClip
{
private var email_checker:CheckEmail;
private var timer:Timer;
private var film_mc:MovieClip;
public static var _Name:String;
public static var _Surname:String;
public static var _Address:String;
public static var _City:String;
public static var _State:String;
public static var _Email:String;
public function Main()
{
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(evt:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE,init);
form_mc.x=stage.stageWidth+10;
stage.frameRate=31;
email_checker=new CheckEmail();
moveInForm();
addButtonListener();
}
private function moveInForm():void
{
Tweener.addTween(form_mc,{x:stage.stageWidth/2-form_mc.width/2,time:0.7,transition:"easeOutElastic"});
}
private function addButtonListener():void
{
form_mc.send_btn.addEventListener(MouseEvent.MOUSE_DOWN,checkFields);
}
private function checkFields(evt:MouseEvent):void
{
if(email_checker.initCheck(form_mc.email_txt.text))
{
if(form_mc.name_txt.text!=''&&form_mc.surname_txt.text!=''&&form_mc.address_txt.text!=''&&form_mc.city_txt.text!=''&&form_mc.state_txt.text!='')
{
showWorking();
_Name=form_mc.name_txt.text;
_Surname=form_mc.surname_txt.text;
_Address=form_mc.address_txt.text;
_City=form_mc.city_txt.text;
_State=form_mc.state_txt.text;
_Email=form_mc.email_txt.text;
var send_data:StoreData=new StoreData(this);
}
else
displayError("fill in all the fields please");
}
else
displayError("invalid e-mail");
}
private function displayError(s:String):void
{
form_mc.error_txt.text=s;
hideError();
}
private function hideError():void
{
timer=new Timer(2500,1);
timer.addEventListener(TimerEvent.TIMER,deleteError);
timer.start();
}
private function deleteError(evt:TimerEvent):void
{
form_mc.error_txt.text='';
}
private function showWorking():void
{
film_mc=new MovieClip();
film_mc.graphics.beginFill(0xFFFFFF,0.7);
film_mc.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
addChild(film_mc);
}
public function hideWorking():void
{
removeChild(film_mc);
displayError("Data has been stored");
reset();
}
private function reset():void
{
form_mc.name_txt.text='';
form_mc.surname_txt.text='';
form_mc.address_txt.text='';
form_mc.city_txt.text='';
form_mc.state_txt.text='';
form_mc.email_txt.text='';
form_mc.x=stage.stageWidth+10;
moveInForm();
}
}
}
Nella seguente riga:
var send_data:StoreData=new StoreData(this);
viene istanziata un' altra classe che si chiama StoreData che invierà i dati al PHP.
La seguente classe:
Code:
/*
*************************************
* Data Store Flash CS3 + PHP
* http://www.FlepStudio.org
* Author: Filippo Lughi
* version 1.0
*************************************
*/
package org.FlepStudio
{
import flash.events.*;
import flash.net.*;
import flash.display.MovieClip;
public class StoreData
{
private var request:URLRequest=new URLRequest('http://www.flepstudio.org/swf/ImmagazzinareDati/storeData.php');
private var _fla:MovieClip;
public function StoreData(fla:MovieClip)
{
_fla=fla;
sendToPHP();
}
private function sendToPHP():void
{
var variables:URLVariables=new URLVariables();
variables.name=Main._Name;
variables.surname=Main._Surname;
variables.address=Main._Address;
variables.city=Main._City;
variables.state=Main._State;
variables.email=Main._Email;
request.method=URLRequestMethod.POST;
request.data=variables;
var loader:URLLoader=new URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
addListeners(loader);
trace(variables);
try
{
loader.load(request);
}
catch (error:Error)
{
trace('Unable to load requested document.');
}
}
private function addListeners(d:IEventDispatcher):void
{
d.addEventListener(Event.COMPLETE,onComplete);
}
private function onComplete(e:Event):void
{
var loader:URLLoader=URLLoader(e.target);
var vars:URLVariables=new URLVariables(loader.data);
if(vars.answer=="ok")
{
_fla.hideWorking();
}
}
}
}
Il file PHP è invece strutturato in questo modo:
PHP Code:
<?php
/*
*************************************
Flash CS3 Data Store Form
http://www.flepstudio.org
Author: Filippo Lughi
version 1.0
*************************************
*/
/******** CHANGE YOUR DATABASE SETTING *******/
$dbhost = 'localhost'; // database host ( usually localhost )
$dbuser = 'root'; // database username
$dbpass = 'root'; // database password
$dbname = 'name'; // database name
$mysql = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);
/* VARIABLES FROM FLASH */
$name=$_REQUEST["name"];
$surname=$_REQUEST["surname"];
$address=$_REQUEST["address"];
$city=$_REQUEST["city"];
$state=$_REQUEST["state"];
$email=$_REQUEST["email"];
/*INSERT INTO DB*/
$Query = "INSERT INTO `".$dbname."`.`clients` (`ID`, `name`, `surname`, `address`, `city`, `state`, `email`) VALUES (NULL, \"".$name."\", \"".$surname."\",\"".$address."\",\"".$city."\",\"".$state."\",\"".$email."\");";
/* ECHO TO FLASH */
if(mysql_query($Query))
{
$answer='ok';
echo "answer=".$answer;
}
else
{
$answer='nope';
echo "answer=".$answer;
}
?>
La prossima volta vrdremo come recuperare i dati..
Allego i files: