Flash e Database MySQL

- Letture: 3.291

Con il tutorial di oggi impareremo come caricare un’immagine presa da un database MySQL con l’utilizzo di una query. Inoltre aggiungeremo un effeto di trasinamento dell’immagine con relativo zoom tramite la rotellina del mouse.

Prima di tutto analizziamo come un filmato Flash può ricevere dei parametri da un file esterno.

Dati=pippo&cognome=esposito&casa=napoli&

Nel nostro esempio, dovendo interagire con un database, creeremo una query usando una Select per stampare in un file .php la sintassi in esempio sopra con la directory dell’immagine.

Dal nostro Database mySQL creiamo una tabella Immagini ed inseriamo un record foto varchar(100), in cui vi sarà la path dell’immagine:

database_esempio.jpg

Creiamo una connessione al database con il file connessione.php

<?php
$con=mysql_connect('localhost','root') or die('non riesco a trovare il server');
mysql_select_db('my_juliuswebdesign',$con)or die("Attenzione non trovo il database");
?>

In questo caso il mio database di chiama my_juliuswebdesign, inseguito voi lo cambierete con il nome del vostro. 

Creiamo ora una pagina di nome dati.php, è inseriamo il seguente codice, per passare dal database a Flash il parametro.

<?php
include('connessione.php'); //creo una connessione
$risultato=mysql_query("Select* from Immagini") or die ("non trovo la tabella"); //seleziono tutto dalla tabella Immagini
$numRecord=mysql_num_rows($risultato);if($numRecord!=0){while($record=mysql_fetch_array($risultato)){
$Foto = $record['foto']; //appoggio il record foto nella variabile foto
echo"immagine=$Foto"; stampo la variabile foto seguita da immagine=
}
}
?>

dati.php stamperà la sintassi corretta per ricevere la path dell immagine prendendo il record dal database.

immagine=http://juliusdesign.wordpress.com/avatar/juliusdesign-128.jpg

  • Aggiungiamo l’effetto di trascinamento sull’immagine

Prima di tutto creiamo un Clip Filmato di nome istanza box che ci farà da contenitore.
In seguito selezioniamo il clip, entriamo nel codice [Tasto rapido F9] è inseriamo il codice per rendere un oggetto trascinabile

on (press) {
this.startDrag();
}
on (release) {
this.stopDrag();
}

  • Leggiamo i dati dal file generato dalla query dati.php

dati = new LoadVars(); //creo una variabile
dati.onLoad = function(success) {
if(success){
foto = this.immagine; //associo foto al parametro immagine
loadMovie(foto, _root.box); // carico la foto nel clip box
}else{
trace("il caricamento non è stato possibile");
};
dati.load(”dati.php”); //invoco il metodo load della classe loadVars
};

  • Aggiungiamo un effetto zoom, tramire il movimento della rotella del mouse.

var mouseListener:Object = new Object(); // creo un oggetto mouseListener
mouseListener.onMouseWheel = function(delta:Number) {
box._xscale += delta; // scalo l'asse delle ascisse
box._yscale += delta; // // scalo l'asse delle ordinate
};
Mouse.addListener(mouseListener); // invoco l'oggeto mouseListener

Scarica il sorgente
Guarda il Tutorial

Stratega, Docente, Speaker con più di 12 anni di esperienza in strategie creative multicanale. Oggi sono Partner & Chief Innovation Officer di ThinkingHat, Innovation Studio specializzato in tecnologie emergenti per aziende e brand audaci.

31 Commenti

  1. insomma, io non so dove sbaglio, ma a me non funziona!!!
    il mio file php è:
    $calculation = $_POST['years']*7;
    echo "&returnVal=$calculation";

    e in flash, ottengo come risultato:

    $calculation";

    il codice in flash è

    stop();
    //=================================
    // INIT
    //=================================
    //declare path to php files
    lvOut = new LoadVars(); //create lv object
    lvIn = new LoadVars(); //create lv object
    lvIn.onLoad = function (success) {
    if(success){
    output.text = lvIn.returnVal;//PHP variable value to textbox
    }else{
    output.text = "fail"; //or notify of failure
    }
    }
    //=================================
    // BTN
    //=================================
    myBtn.onRelease = function(){
    lvOut.years = years.text; //assign user-input value to lv property called years
    //lvOut.send(path + "dogyears.php","_blank"); //send to a blank window
    lvOut.sendAndLoad(path + "dogyears.php", lvIn, "POST"); //get results returned to lvIn
    };

    dove:
    un input text chesi chiama years, da un pulsante che si chiama myBtn e da una dynamic text che si chiama output

  2. in teoria se non erro dovrebbe essere scritto
    echo "returnVal=$calculation";
    passando con post years=7

    la variabile che flash prenderà sarà returnVal=49
    non capisco perchè ce scritto la E commerciale prima di returnVal :master: sembrerebbe un ulteriore concatenamento si variabili, ma se tu ne usi solo una…
    comunque hai provato il mio Tutorial??
    saluti

  3. Ciao!
    Complimenti per loscript.
    Sai dirmi perchè mi ritorna l’url dell’immagine nel file swf e non l’immagine?

    … e quindi dico…. se mi ritorna l’url vuol dire che la variabile è stata assegnata, come mai non mi appare l’immagine?

  4. mmm strano..vedendo l’url dovrebbe essere un buon segno, infatti vuol dire che viene salvato…
    questa immagine ha estensioni compatibili con flash?? jpg png gif ecc
    Possibile che sia molto pesante e ci metta tanto a caricarla??
    non lo sò….sto un pò sparando ^_^
    in teoria quell’url viene caricato in un loadMovie… hai cambiato qualcosa a livello di codice AS?

  5. Sembra quasi che siamo in chat! :))
    Grazie ancora una volta per la celerità nel rispondermi, davvero ho bisogno diuno script del ge nere, si vede che lo haicapito. :P

    Ti posto l’url quasi esatto
    http://www.********.com/img/prova.gif

    Naturalmente è un’immagine di prova.

    No nello script non ho sostituito assolutamente niente, anche perchè l’ho prelevato questo pomeriggio, dopo che mi sono svenato a trovare qualcosa del genere nel web.

    In pratica mi appare la cornicetta celeste ed in basso ad essa allineato a sinistra dello schermo, in colore grigio, l’url che ti ho inserito.

  6. Questa cosa è molto strana o.O lo provi in Locale o Online??

    se ti da errore Online inviami i file che lo controllo :)

  7. Provo online, in pratica è come il tuo esempio, sotto esce l’url, giustamente nel campo di testo dinamico, e sopra l’immagine, solo che io l’immagine non la vedo! -.-‘

  8. mi sembra molto strano come ti ho gia detto ^_^ ti vorrei dire di inviarmi i file, ma alla fine dovrebbero essere uguali ai miei.. ^^”

    Hai provato con altre immagini?

  9. A questo punto… posso invitarti su msn? :D

    Si i file sono gli stessi.

    Si ho sostituito l’immagine con gif, jpeg ed ho provato a dare l’url nell campo del database solo a img/prova.gif

    Non vorrei sia proprio li l problema ora che ci penso, perchè nel tuo zip non cè la query mysql. O.O Quindi è l’unica cosa che ho creato con le mie manine.

  10. nome db: Immagini

    Campo Tipo Collation Attributi Null Predefinito Extra Azione
    id int(11) No auto_increment
    foto varchar(255) latin1_swedish_ci No

  11. Guarda in teoria se nel filmato flash vedi l’url in grigio dovrebbe funzionare l’interazione con il DB…
    ora stacco…magari ci ri-aggiorniamo domani

    ciao

  12. Aggiunto a contatti msn, vediamo di risolvere questo problema, credo che non sarò l’unico ad avere bisogno di questo script, e magari facciamo qualcosa di utile per iprosperi! :)

  13. Bè… dopo tutti questi giorni di prove rieccomi qui!
    Ho provato e riprovato all’infinito, ma nulla.

    Insomma Julius i file sono quelli tuoi del tutorial, unica cosa è il database, che ti ho pubblicato sopra, e crdo vada bene.

    Ninete continua ad uscirmi l’url dell’immagine ma non l’immagine1 :(

  14. Ok julius…. intanto scusami per il troppo disturbo ingiustificato.

    Dunque la soluzione al problema è questa, dopo l’ennesimo test.

    Lo script funziona benissimo ma accetta solo immagini jpg

    Ora a me serve che legga ogni tipo di immagine. come posso ovviare al problema?

    Grazie per la cortesia e la disponibilità

  15. Grazie Julius per la risposta.
    Io ho caricato jpg e va benissimo, ma provando con la stessa immagine nella stessa directory ma in formato gif oppure png (a me serve la trasparenza sotto l’immagine) non va. :(

    Certo in teoria dovrebbe funzionare, se carica jpg che differenza cè a caricare un’altro formato?

    Puoi fare tu stesso delle prove perfavore? tanto i file sono gli stessi dei tuoi… anzi sono tuoi! :)

    Grazie

  16. Ho fatto delle prove, ed effettivamente i file gif non li carica o.O

    Li caricherebbe se cambi

    loadMovie(foto, _root.box);

    con

    loadMovieNum(foto, 1);

    però a questo punto non gestiresti più lo zoom o.o

    vedo di trovare un’altra soluzione

    ciao

  17. Grazie Julius, a me lo zoom non interessa! :D

    Approposito… nello script php come faccio per pescare in modo random le immagini?
    Nel database ho aggiunto un campo id autoincrement

  18. inserisci una funzione random che la utilizzerai per cecercare il valore autoincrement
    nel mio caso id
    <?php
    include(’connessione.php’); //creo una connessione
    $val= rand (1, 20);// valore random pesca un numero da 1 a 20 in questo caso
    $risultato=mysql_query(”Select* from Immagini WHERE id=$val”) or die (”non trovo la tabella”); //seleziono tutto dalla tabella Immagini
    $numRecord=mysql_num_rows($risultato);if($numRecord!=0){while($record=mysql_fetch_array($risultato)){
    $Foto = $record[’foto’]; //appoggio il record foto nella variabile foto
    echo”immagine=$Foto”; stampo la variabile foto seguita da immagine=
    }
    }
    ?>

  19. ciao a tutti.
    in questo tutorial ho visto come leggere un campo di una tabella…come faccio a mandare un comando mysql con flash e php?? tipo cancella record, o aggiorna un campo?

    Grazie atutti.
    P.s.
    davvero bravo

  20. Antonello

    Ciao Julius
    Ma hai qualche esempio anche in ASP di accesso a DB Access?
    Saluti
    Antonello

  21. Ciao Julius stavo vedendo questo tutorial, ma quello che mi chiedeve è:
    Se io avessi un 10 di foto, e dovessi caricarle tutte insieme come dovrei fare??
    Mi sono buttato giusto da poco su php-mysql-flash e non ne riesco a venire a capo

  22. matteo ha scritto:

    Ciao Julius stavo vedendo questo tutorial, ma quello che mi chiedeve è:
    Se io avessi un 10 di foto, e dovessi caricarle tutte insieme come dovrei fare??
    Mi sono buttato giusto da poco su php-mysql-flash e non ne riesco a venire a capo

    Hola julius! Anche io sto impazzendo per far funzionare il tuo script con più immagini, ho trovato come fare ma richiamando un file datix.php per ogni immagine, ho provato ad usare piu righe di variabili (immagine1, immagine2 ecc..) nello stesso dati.php ma non funziona.

    Spero di essermi spiegato bene. Se preferisci ti carico uno zip con tutto su un mio spazio se ti può servire.

    Saluti elle

  23. In pratica dovreste fare un array nel quale inserire il tot di immagini e caricarle in modo ciclico…

    Magari faccio un esempio, tempo permettendo…

  24. Eh per chi come me non mastica molto di actionscript un esempio sarebbe molto utile.. tempo permettendo.. chiaro ;)

    Grazie
    Ciao elle

  25. Ciao a tutti!
    Sulla base di questo Tutorial (che a me funziona!!! ;) ) ho deciso di implementarlo, ma sto incontrando dei problemi.
    Il mio progetto è questo: caricare tante immagini da un DB mysql su un MC dinamico (con attachMovie).
    Come posso risolvere sto problema?
    posto il cod. FLASH, quello php è rimasto +o- uguale al tutorial.
    grazie in anticipo a tutti e sopratutto a Julius che mi salva ad ogni intoppo con i suoi tutorial ;)!!!
    dati = new LoadVars(); //creo una variabile
    dati.load(“dati.php”);//associo la variabile al file dinamico php
    dati.onLoad = function() {
    var box: MovieClip = this.createEmptyMovieClip(“box”, 1);
    colonne = 7;
    foto = this.immagine; //associo foto al parametro immagine
    sectionCount = this.count_record;//numero foto
    for (var i:Number=0; i<sectionCount; i++){
    loadMovie(foto, this.box); // carico la foto nel clip box
    var depthCount: Number = box.getNextHighestDepth();
    var cat: MovieClip = box.attachMovie ("cat", "cat" + i, depthCount);

    if (i<colonne) { //fino a 7 riquadri stanno in orizzontale all'8 si passa alla riga sottostante
    box["cat"+i]._y = 0;
    box["cat"+i]._x =136*i+20; //dimensione Mc 135 +1(linea di stacco)
    } else {
    box["cat"+i]._y = Number(box["cat"+(i-colonne)]._y)+136;//(dimensioneMC + linea stacco orizzontale[tra le righe])
    box["cat"+i]._x = box["cat"+(i-colonne)]._x;
    }
    }
    }
    /* codice "buono"
    var box: MovieClip = this.createEmptyMovieClip("box", 1);
    colonne = 7;
    dati = new LoadVars(); //creo una variabile
    dati.load("dati.php"); //associo la variabile al file dinamico php
    dati.onLoad = function() {
    foto = this.immagine; //associo foto al parametro immagine
    //var sectionCount : Number= this.count_record;
    sectionCount = this.count_record;//numero foto

    for (var i:Number=0; i<sectionCount; i++){
    var depthCount: Number = box.getNextHighestDepth();
    var cat: MovieClip = box.attachMovie ("cat", "cat" + i, depthCount);
    box["cat"+i].loadMovie(foto, _root.box); // carico la foto nel clip box
    if (i<colonne) {
    box["cat"+i]._y = 0;
    box["cat"+i]._x =136*i+20;
    } else {
    box["cat"+i]._y = Number(box["cat"+(i-colonne)]._y)+136;
    box["cat"+i]._x = box["cat"+(i-colonne)]._x;
    }
    }

    }*/

Commenti