Flash e Database MySQL

9 05 2007

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


Azioni

Informazione

24 risposte

22 05 2007
acaonweb

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

22 05 2007
Julius

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

13 06 2007
Lorenzo

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?

13 06 2007
Julius

ciao nel database viene salvato l’url correttamente?

13 06 2007
Lorenzo

Grazie julius per la celere risposta.

Comunque nel database cè l’url http://www.sito.estensione/cartella/immagine.estensione

e nel movie flash mi viene fuori l’url che ti ho appena indicato e non l’immagine.

13 06 2007
Julius

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?

13 06 2007
Lorenzo

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.

13 06 2007
Julius

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

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

13 06 2007
Lorenzo

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! -.-’

13 06 2007
Julius

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?

13 06 2007
Lorenzo

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.

13 06 2007
Julius

si ok per msn…

cmq la query è descritta nell’articolo…

13 06 2007
Lorenzo

nome db: Immagini

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

13 06 2007
Julius

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

13 06 2007
Lorenzo

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! :)

21 06 2007
Lorenzo

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 :(

21 06 2007
Lorenzo

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à

21 06 2007
Julius

be in teoria dovrebbe funzionare anche con gif e png, tu cosa hai caricato?

21 06 2007
Lorenzo

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

21 06 2007
Julius

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

21 06 2007
Lorenzo

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

21 06 2007
Julius

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=
}
}
?>

26 08 2007
Antonio

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

26 08 2007
Julius

Ciao Antonio,

dai uno sguardo a questo 3D sul forum di HTML.it

Lascia un commento

Occorre aver fatto il login per inviare un commento