Flash Gallery | Flash Templates | Flash Menu | Flash Design | Flash Audio & Video

Video Corsi Actionscript 3.0


+ Reply to Thread
Results 1 to 7 of 7

Thread: Inserire dati nel DataBase da Flash CS3

  1. #1
    Administrator Living At The FlepStudio! Flep is on a distinguished road
    Join Date
    Jul 2007
    Posts
    5,452
    Rep Power
    8

    Inserire dati nel DataBase da Flash CS3

    amazing Flash templates
    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` (
    `
    IDINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `
    nameTEXT NOT NULL ,
    `
    surnameTEXT NOT NULL ,
    `
    addressTEXT NOT NULL ,
    `
    cityTEXT NOT NULL ,
    `
    stateTEXT NOT NULL ,
    `
    emailTEXT 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:
    Attached Files

  2. #2
    Administrator Living At The FlepStudio! Flep is on a distinguished road
    Join Date
    Jul 2007
    Posts
    5,452
    Rep Power
    8

    Re: Inserire dati nel DataBase da Flash CS3

    Ecco la seconda parte che spiega come recuperare i dati:

    Recuperare dati da mySQL con Flash CS3

  3. #3
    Junior Member Settled In valerio.pisapia is on a distinguished road
    Join Date
    Nov 2007
    Posts
    23
    Rep Power
    0

    Re: Inserire dati nel DataBase da Flash CS3

    Vorrei riaprire la discussione perchè ho lo stesso tipo di problema...
    Ho preso questo esempio per fare alcune prove utilizzando ASP.net

    Ho creato un file main_contact.fla con Dc Main.as
    Code:
    package
    {
        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 static var _Sex:String;
            public static var _Message: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.messaggio_txt.text!=''&&form_mc.genere_txt.text!=''&&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;
                        _Sex=form_mc.genere_txt.text;
                        _Message=form_mc.messaggio_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.messaggio_txt.text='';
                form_mc.genere_txt.text='';
                form_mc.x=stage.stageWidth+10;
                
                moveInForm();
            }
        }
    }
    StoreData.as
    Code:
    package
    {
        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 static var _Sex:String;
            public static var _Message: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.messaggio_txt.text!=''&&form_mc.genere_txt.text!=''&&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;
                        _Sex=form_mc.genere_txt.text;
                        _Message=form_mc.messaggio_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.messaggio_txt.text='';
                form_mc.genere_txt.text='';
                form_mc.x=stage.stageWidth+10;
                
                moveInForm();
            }
        }
    }
    L'errore che mi da è:
    Error: Error #2101: La stringa passata a URLVariables.decode() deve essere una stringa di query con codifica URL contenente coppie nome/valore.
    at Error$/throwError()
    at flash.net::URLVariables/decode()
    at flash.net::URLVariables()
    at flash.net::URLLoader/onComplete()

    questo è la stringa che restituisce "variables" dopo il click
    Code:
    messsaggio=ddd&stato=zxczx&indirizzo=zxczx&genere=zxcvxz&citta=zxczx&nome=zxcc&cognome=czxc&email=zxczx%40dff%2Eiy
    Help me please

  4. #4
    Moderator Moving My Stuff To The FlepStudio OrientExpress is on a distinguished road OrientExpress's Avatar
    Join Date
    Aug 2009
    Posts
    1,279
    Rep Power
    2

    Re: Inserire dati nel DataBase da Flash CS3

    Nel file ASP sei sicuro che non esiste codice html o altro tipo ?
    Deve esserci solo ASP che restituisce un valore.

  5. #5
    Junior Member Settled In valerio.pisapia is on a distinguished road
    Join Date
    Nov 2007
    Posts
    23
    Rep Power
    0

    Re: Inserire dati nel DataBase da Flash CS3

    si ti copio la pagina
    Code:
    <%@ Page Language="c#" Debug="true" %>
    <%@ Import namespace="System.Data.OleDb"%>
        protected OleDbDataReader rs;
        protected OleDbCommand cmdSql;
        protected OleDbConnection conn;
        protected OleDbDataReader rs2;
        protected OleDbCommand cmdSql2;
        protected OleDbConnection conn2;
        protected string strsql;
        aspx.cUtility utility = new aspx.cUtility();       
        private void Page_Load(object sender, System.EventArgs e)
        {
            conn = new OleDbConnection(utility.connetti("\\..\\gestione"));
            conn.Open();
            try
            {
                string nome = Request.Form.Get("nome");
                string cognome = Request.Form.Get("cognome");
                string genere = Request.Form.Get("genere");
                string email = Request.Form.Get("email");
               // string oggetto = Request.Form.Get("oggetto");
                string messaggio = Request.Form.Get("messaggio");
                string indirizzo = Request.Form.Get("indirizzo");
                string citta = Request.Form.Get("citta");
                string stato = Request.Form.Get("stato");
    
                inserisci();
                
                Response.Write("msg=ok" + "&");
           }
            catch (Exception ex)
            {
               Response.Write("msg=" + ex.Message + "&");
            }    
        }
    
        private void inserisci()
        {
            strsql = "Insert into UTENTI (nome, cognome,genere,messaggio,email,indirizzo,citta,stato) values (";
            strsql += "'" + Request.Form.Get("nome").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("cognome").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("genere").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("messaggio").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("email").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("indirizzo").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("citta").Replace("'", "''") + "'";
            strsql += ",'" + Request.Form.Get("stato").Replace("'", "''") + "'";
            strsql += ")";
            cmdSql = new OleDbCommand(strsql, conn);
            cmdSql.ExecuteNonQuery();
        }
        
        protected void Page_Unload(object s, EventArgs e)
        {
            conn.Close();
        }


    Quote Originally Posted by OrientExpress View Post
    Nel file ASP sei sicuro che non esiste codice html o altro tipo ?
    Deve esserci solo ASP che restituisce un valore.
    Last edited by valerio.pisapia; 01-10-09 at 11:58. Reason: sistemato tags codice

  6. #6
    Moderator Moving My Stuff To The FlepStudio OrientExpress is on a distinguished road OrientExpress's Avatar
    Join Date
    Aug 2009
    Posts
    1,279
    Rep Power
    2

    Re: Inserire dati nel DataBase da Flash CS3

    ASP non lo conosco ma ad esempio il PHP deve restituire in questo modo:
    String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pair | Tutorials Flash CS3 Flash CS4
    cerca di applicarlo al tuo ASP.

  7. #7
    Junior Member Settled In valerio.pisapia is on a distinguished road
    Join Date
    Nov 2007
    Posts
    23
    Rep Power
    0

    Re: Inserire dati nel DataBase da Flash CS3

    Allora ho provato cosi:
    loader.dataFormat=URLLoaderDataFormat.TEXT;
    invece di
    loader.dataFormat=URLLoaderDataFormat.VARIABLES;
    L'errore scompare!

    Però
    Code:
            private function onComplete(e:Event):void
            {
                var loader:URLLoader=URLLoader(e.target);                                
                var vars:URLVariables=new URLVariables(loader.data);    
                //Qui diciamo che mi si blocca ... vale a dire non va più avanti!
                //non capisco perchè _wall:
                _fla.form_mc.error_txt.text="aa:"+vars;    
                if(vars.msg=="ok")
                {
                    //richiama la funzione nella dc Main
                    _fla.hideWorking();
                }
            }

+ Reply to Thread

Similar Threads

  1. Storing data in DataBase with Flash CS3
    By Flep in forum Tutorials
    Replies: 14
    Last Post: 29-01-10, 07:14
  2. Inserire codice HTML in un sito flash..
    By binarydna in forum Flash Italiano
    Replies: 2
    Last Post: 26-01-10, 10:11
  3. Sending data from Flash to PhpMyAdmin-Database
    By jikowhitewolf in forum PHP | mySQL | Flash CS3
    Replies: 8
    Last Post: 13-01-10, 07:27
  4. Inserire Slideshow in filmato flash
    By nicola286 in forum Flash Italiano
    Replies: 0
    Last Post: 06-10-09, 08:26
  5. Inserire tag flash... nei post
    By edo_flash in forum Off Topic - Libera la mente
    Replies: 3
    Last Post: 22-10-07, 08:47

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Optimization by vBSEO