+ Reply to Thread
Page 1 of 2 1 2 LastLast
Results 1 to 10 of 12

Actionscript 3.0 e Zend AMF

This is a discussion on Actionscript 3.0 e Zend AMF within the Articoli e tutorials forums, part of the Flash Italiano category; Zend è un framework PHP. Zend Amf ci permette di comunicare da Flash al PHP senza dover utilizzare l' XML ...

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

    Actionscript 3.0 e Zend AMF

    Zend è un framework PHP.

    Zend Amf ci permette di comunicare da Flash al PHP senza dover utilizzare l' XML.


    immagine


    Ad esempio, per interrogare un DataBase da Flash bisogna chiamare uno script PHP che esegue la query al DB e restituisce un output in formato XML.

    Solo a quel punto Flash è in grado di visualizzare i dati del DB richiesti.

    Invece, con Zend Amf si bypassa l' XML.

    In questo caso il PHP esegue la query al DB e restituisce i valori ( come ad esempio un Array ) direttamente a Flash.

    Come ?

    Usando la classe NetConnection di Actionscript 3.0 !


    Questo tutorial mostrerà un semplice esempio di come interrogare un DataBase con Actionscript 3.0 e Zend.

    Possiamo usare sia Flash CS3 sia Flash CS4.


    Passo 1

    Scaricare il framework Zend ( ZIP versione 1.7.0 ).

    Requisiti necessari:

    - PHP 5.1.4 o superiore


    Passo 2

    Accertarsi di avere un DataBase con almeno una tabella da interrogare.

    Personalmente userò il DataBase di WordPress di questo blog per recuperare con Flash i nomi degli autori di tutti i commenti del blog.


    Passo 3

    Creare una nuova cartella nella root del server: httpdocs ( oppure public_html, dipende dal server ).

    Io ho creato una cartella con nome "frameworks".

    All' interno di frameworks carico la cartella Zend che trovo dentro a library una volta scompattato lo ZIP appena scaricato dal sito Zend.


    Creo un' altra cartella con nome "ZendAmf" sempre nella root del server.


    Passo 4

    Creare un file index.php implementato nel seguente modo e caricarlo nella cartella ZendAmf :


    PHP Code:
    <?PHP
    error_reporting
    (E_ALL|E_STRICT);

    ini_set("display_errors","on");
    ini_set("include_path",ini_get("include_path") . ":../frameworks");

    require_once 
    "Zend/Amf/Server.php";
    require_once 
    "Comments.php";

    $server=new Zend_Amf_Server();
    $server->setClass("Comments");

    echo(
    $server->handle());
    ?>

    Nella prima riga attivo la modalità di avviso errori e di che tipo qualora ce ne fossero.


    ini_set, imposta il valore di una data opzione di configurazione.

    Se l'operazione riesce restituisce il vecchio valore, oppure FALSE se fallisce.

    Le opzioni di configurazione manterranno il nuovo valore durante l'esecuzione dello script, e saranno ripristinate al termine dello stesso.

    Quindi ho incluso la path "frameworks".


    L'istruzione require_once() include e valuta il file specificato durante l'esecuzione dello script.

    È un comportamento simile all'istruzione require(), con la sola differenza che se il codice di un file è stato già incluso, esso non sarà incluso nuovamente.

    Quindi dico al PHP che servono i files Server.php ( esattamente nella path Zend/Amf/ ) e Comments.php ( che vado a creare nel passo 5 di questo tutorial ).


    Istanzio Zend, new Zend_Amf_Server(), istanzio la classe Comments ed eseguo un echo del metodo handle().


    Passo 5

    Creare una classe PHP con nome Comments.php
    implementata nel seguente modo e caricarlo nella cartella ZendAmf :


    PHP Code:
    <?php
    class Comments
    {
        public function 
    __construct()
        {
            
    mysql_connect("localhost","username","password");
            
    mysql_select_db("database");
        }
        
        public function 
    getAuthors()
        {
            
    $result=mysql_query("SELECT * FROM wp_comments");
            
    $t = array();
            
            while(
    $row=mysql_fetch_assoc($result))
            {
                
    array_push($t,$row);
            }
            
            return 
    $t;
        }
    }
    ?>

    Come possiamo vedere, questa classe si connette al DB nella sua funzione costruttrice.

    Poi ha un metodo ( getAuthors ) che esegue la query al DB, fa il push in un Array di ogni riga della tabella wp_comments e restituisce l' Array.

    Questo Array lo andremo a recuperare con Flash.


    Passo 6

    Apriamo Flash.

    Creo un FLA che salvo con nome zendamf.fla .

    Nella sua libreria ho una MovieClip che fungerà da preloader con Linkage "Wheel".

    Poi trascino un componente TextArea sullo stage e gli assegno il nome istanza "my_ta";


    A questo punto apro il pannello azioni e scrivo:


    Code:
    var nc:NetConnection=new NetConnection();
    nc.connect("http://url della cartella ZendAmf/");
    var res:Responder=new Responder(onResult,onError);
    
    my_ta.visible=false;
    
    var wheel_mc:Wheel=new Wheel();
    wheel_mc.width=wheel_mc.height=40;
    wheel_mc.x=stage.stageWidth/2-wheel_mc.width/2;
    wheel_mc.y=stage.stageHeight/2-wheel_mc.height/2;
    addChild(wheel_mc);
    nc.call("Comments.getAuthors",res);
    
    function onResult(e:Object):void
    {
    	for(var i:int=0;i < e.length;i++)
    	{
    		my_ta.appendText((i+1)+" - "+e[i].comment_author+"\n");
    	}
    	
    	wheel_mc.stop();
    	removeChild(wheel_mc);
    	my_ta.visible=true;
    }
    
    function onError(e:Object):void
    {
    	wheel_mc.stop();
    	removeChild(wheel_mc);
    	my_ta.text=e.toString();
    	my_ta.visible=true;
    }

    Passo 7

    Analizziamo Actionscript.


    Creo una nuova istanza della classe NetConnection

    var nc:NetConnection=new NetConnection();

    e gli dico di connettermi alla cartella ZendAmf in cui ho index.php che abbiamo appena creato

    nc.connect("http://www.flepstudio.org/ZendAmf/");

    Creo una nuova istanza della classe Responder che chiamerà la funzione onResult quando avrà caricato i dati dal PHP e la funzione onError se ci saranno degli errori.


    var res:Responder=new Responder(onResult,onError);


    imposto la text area invisibile

    my_ta.visible=false;


    Aggiungo il preloader

    var wheel_mc:Wheel=new Wheel();

    wheel_mc.width=wheel_mc.height=40;

    wheel_mc.x=stage.stageWidth/2-wheel_mc.width/2;

    wheel_mc.y=stage.stageHeight/2-wheel_mc.height/2;

    addChild(wheel_mc);


    Dico alla istanza NetConnection di chiamare il metodo getAuthors() della classe Comments.php

    nc.call("Comments.getAuthors",res);


    Questa funzione viene chiamata quando i dati dal PHP sono stati caricati:

    La cosa molto bella è che il PHP ci restituisce un Object.

    Quindi creo un ciclo for per recuperare gli autori e li assegno come testo della mia text area.

    Nota che chiamo comment_author che è il nome della colonna della tabella che ho interrogato ! Questo è il bello !

    Quindi i nomi delle colonne della tabella, in Flash diventano proprietà di quell' oggetto
    che ci viene restiuito dal PHP !

    function onResult(e:Object):void

    {

    for(var i:int=0;i<e.length;i++)

    {

    my_ta.appendText((i+1)+" - "+e[i].comment_author+"\n");

    }


    rimuovo il preloader,

    wheel_mc.stop();

    removeChild(wheel_mc);


    rendo visibile la text area

    my_ta.visible=true;

    }


    Questa funzione viene chiamata solo se Flash o il PHP incontrano un errore durante il processo.

    function onError(e:Object):void

    {

    wheel_mc.stop();

    removeChild(wheel_mc);

    my_ta.text=e.toString();

    my_ta.visible=true;

    }


    Ed ecco il risultato:









  2. #2
    Senior Member Flash Obsessed loris.dassie is on a distinguished road
    Join Date
    Jan 1970
    Posts
    112
    Rep Power
    43

    Re: Actionscript 3.0 e Zend AMF

    In questi giorni ho iniziato ad usare Zend Framework e tra le cose che più mi sono piaciute c'è proprio la possibilità di bypassare l'xml per far avere i dati a Flash.

    Volevo scriverci un post ma tu, come sempre, sei un passo avanti. Grande Filippo!!!!

  3. #3
    Junior Member Settled In shmk is on a distinguished road
    Join Date
    Nov 2008
    Posts
    9
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    Qualcuno ha un'idea del perchè quando provo ad avviarlo mi restituisce l'errore

    Code:
    Error opening URL 'http://localhost/amf/'
    Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed
    at retrive_fla::MainTimeline/frame1()
    Aggiungo che:
    lo sto provando in locale su windows con wamp,
    se provo da un altro script php a richiamare ./fw/comments.php ciò che resituisce getAuthors() è giusto,
    se provo a chiamare ./amf/index.php da browser mi restituisce un file .part contenente
    Code:
    < p>Zend Amf Endpoint< /p>

  4. #4
    Junior Member Settled In donnie85 is on a distinguished road
    Join Date
    Apr 2009
    Posts
    6
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    ciao a tutti...molto utile questo zend...riesco a ricevere i dati dal db ma non riesco a fare delle insert con dei parametri inviati da flash. Nella call vedo che appunto si possono inviare dei parametri, ma come si richiamano da php? grazie mille...ciao ciao

  5. #5
    Junior Member Settled In trastullo is on a distinguished road
    Join Date
    Mar 2008
    Posts
    12
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    ciao ragazzi.
    ho letto un po in giro e sto tentando di fare un sito in flash che gestisce un database mysq utilizzando zend.. ma sono bloccato. nn riesco ad estrarre ad esempio un record solo da una tabella. ho modificato la funzione nel file php
    PHP Code:
        public function get_prova($idtemp)
        {
              
    $la_query sprintf("SELECT * FROM tb_anagrafica WHERE id_anagrafica = %s ORDER BY Cognome ASC",$idtemp);
              
    $result mysql_query($la_query) ;        
              
    $t = array();
            while(
    $row mysql_fetch_assoc($result))
                {
                
    array_push($t$row);
                }
        return 
    $t;
        } 
    ma poi nn riesco da flash a passarli il valore $idtemp !!!
    qualche suggerimento ??

  6. #6
    Junior Member Settled In trastullo is on a distinguished road
    Join Date
    Mar 2008
    Posts
    12
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    mi rispondo da solo :D studiato un pochetto ho scoperto che per passare il valore della variabile "pippo" da flasha php si deve usare la sintassi
    Code:
     
    nc.call("funzioni.get_prova",res,pippo);

  7. #7
    Junior Member Settled In AndreaM is on a distinguished road
    Join Date
    Jan 2010
    Posts
    2
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    Salve,
    sto realizzando il mio primo sito web in flash e mi sono fermato al login, non capisco come fare a salvare una variabile in sessione, per poi riaccedervi in una seguente chiamata.. Grazie in anticipo!

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

    Re: Actionscript 3.0 e Zend AMF

    Ciao AndreaM e benvenuto.
    Flash non ha sessioni come il PHP.
    Un SWF è un video, quindi hai due strade:
    1) il PHP ( o qualsiasi altro linguaggio lato server stai usando ) apre le sessioni che passi all'SWF tramite HTML ed Actionscript eseguirà delle azioni in base a tali variabili.
    2) Flash chiama un PHP passandogli ad esempio un id o nomeutente ed il PHP controllerà nel DB se far passare tale utente oppure no. A quel punto il PHP restituisce un true o false a Flash che si comporterà di conseguenza.

  9. #9
    Junior Member Settled In AndreaM is on a distinguished road
    Join Date
    Jan 2010
    Posts
    2
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    Ho risolto, ho scoperto a mie spese, ovvero passando ben 4 ore a scervellarmi su quale fosse il problema, che se semplicemente testo il filmato da flash, ad ogni chiamata php assegna un session_id diverso, invece dovevo testarlo col php =P
    Grazie per le delucidazioni comunque!

  10. #10
    Junior Member Settled In faina is on a distinguished road
    Join Date
    Apr 2008
    Posts
    7
    Rep Power
    0

    Re: Actionscript 3.0 e Zend AMF

    Ho seguito passo passo le istruzioni, ma il log mi da questo:

    [14-Jun-2010] PHP Fatal error: require_once() [function dot require]: Failed opening required 'Comments.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:../frameworks') in /home/..../public_html/ZendAmf/index.php on line 8

    [14-Jun-2010] PHP Fatal error: require_once() [function dot require]: Failed opening required 'Zend/Amf/Server.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:frameworks') in /home/...../public_html/ZendAmf/index.php on line 7

    come se fosse sbagliato il path... ma dove sbaglio?
    ps il DOT l'ho inserito io

+ Reply to Thread
Page 1 of 2 1 2 LastLast

Similar Threads

  1. Connettere Flex e Zend con Flash Builder 4
    By Flep in forum FLEX builder 3
    Replies: 1
    Last Post: 27-07-10, 09:35
  2. Connecting Flex 4 and Zend using Flash Builder 4
    By Flep in forum Flex builder 3 ENG
    Replies: 2
    Last Post: 07-07-10, 16:16
  3. Zend Framework - AMFPHP
    By davids701124 in forum PHP | mySQL | Flash CS3
    Replies: 0
    Last Post: 20-03-10, 13:15
  4. Actionscript 3.0 and Zend AMF
    By Flep in forum Tutorials
    Replies: 5
    Last Post: 04-03-10, 12:10
  5. Zend AMF
    By shmk in forum Flash CS3 | PHP | mySQL
    Replies: 1
    Last Post: 26-12-08, 12:24

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